Modelbinding mancanza VS2010 asp.net MVC2
-
23-09-2019 - |
Domanda
Il contactAddModel.Search arriva sempre attraverso nullo - tutte le idee
Visualizza dichiarazione
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<rs30UserWeb.Models.StatusIndexModel>" %>
ViewModels
public class StatusIndexModel
{
public ContactAddModel contactAddModel;
public StatusMessageModel statusMessageModel;
}
public class ContactAddModel
{
[Required(ErrorMessage="Contact search string")]
[DisplayName("Contact Search")]
public string Search { get; set; }
}
Visualizza contenuti
<% using (Html.BeginForm("AddContact", "Status")) { %>
<div>
<fieldset>
<legend>Add a new Contact</legend>
<div class="editor-label">
<%= Html.LabelFor(m => m.contactAddModel.Search) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(m => m.contactAddModel.Search)%>
<%= Html.ValidationMessageFor(m => m.contactAddModel.Search)%>
</div>
<p>
<input type="submit" value="Add Contact" />
</p>
</fieldset>
</div>
<% } %>
Regolatore
[HttpPost]
public ActionResult AddContact(Models.ContactAddModel model)
{
if (u != null)
{
}
else
{
ModelState.AddModelError("contactAddModel.Search", "User not found");
}
return View("Index");
}
Soluzione
Penso che il problema con Collections.shuffle()
è che è utilizzata predefinita Random
istanza che è un singleton sicuro del filo. Dici che il tuo programma è multi-threading, quindi posso immaginare la sincronizzazione in Random
essere un collo della bottiglia.
Se sei felicemente in esecuzione su Java 7, usa semplicemente ThreadLocalRandom
. Guarda attentamente, c'è una versione di shuffle()
Prendendo l'istanza Random
esplicitamente:
Collections.shuffle(arr, threadLocalRandom);
.
Dove viene creato threadLocalRandom
solo una volta.
On Java 6 è possibile semplicemente creare una singola istanza di Random
una volta per thread. Si noti che non è necessario creare una nuova istanza di Random
per esecuzione, a meno che non si possa fornire semi casuali ogni volta.