Je pense que je l'ai trouvé un bug dans les paramètres du contrôleur ASP.NET MVC populationASP.NET MVC modèle contraignant bug
public JsonResult Lookup(
string q_word, string primary_key,
int per_page, int page_num)
Si la valeur affichée de q_word est une chaîne vide, q_word recevra une chaîne vide. Alors que si vous compressez ces paramètres ensemble (principe DRY) dans un objet, le comportement est différent, la chaîne vide devient nulle.
public class LookupArg
{
public string q_word { get; set; }
public string primary_key { get; set; }
public int per_page { get; set; }
public int page_num { get; set; }
public string another_word { get; set; }
}
public JsonResult TesterA(
string q_word, string another_word, string primary_key,
int per_page, int page_num)
{
return Json(
new { q_word, primary_key, per_page, page_num, another_word},
JsonRequestBehavior.AllowGet);
}
public JsonResult TesterB(LookupArg la)
{
return Json(
new { la.q_word, la.primary_key, la.per_page, la.page_num,
la.another_word },
JsonRequestBehavior.AllowGet);
}
http://localhost:19829/Product/TesterA?q_word=&primary_key=id&per_page=10&page_num=1&another_word= a cette sortie:
{"q_word":"","primary_key":"id","per_page":10,"page_num":1,"another_word":""}
http://localhost:19829/Product/TesterB?q_word=&primary_key=id&per_page=10&page_num=1&another_word= a cette sortie:
{"q_word":null,"primary_key":"id","per_page":10,"page_num":1,"another_word":null}
J'ai essayé cela aussi, mais sans résultat, même sortie, q_word et another_word sont toujours NULL
public JsonResult TesterB(
[Bind(Include = "q_word, primary_key, per_page, page_num, another_word")]
LookupArg la)
Est-ce que ce genre de comportement est attendu? intentionnellement? devrait-il y avoir une différence si une valeur vient d'objet ou non?
Eh bien cela fonctionne :-) Avez-vous des liens sur un article qui explique la justification d'une chaîne devrait devenir nulle si elle est à l'intérieur de l'objet – Hao