Odovzdávam reťazec dopytov na môj účetz externého zdroja a rád by som tieto hodnoty pridal do modelu a vrátil pohľad. Nižšie uvedený kód funguje, ale vracia zobrazenie so všetkými chybami overenia chýbajúcich polí. Jednoducho by som chcel, aby sa vrátil výhľad s týmito poliami.
Ďalším problémom je, že by som chcel na koniec adresy vrátiť čistú adresu URL / účet / registráciu bez reťazca Query String?
// **************************************
// URL: /Account/WriteRegistration/?Number=251911083837045755&Name=All&Remote=False
// **************************************
public ActionResult WriteRegistration(RegisterModel model, string Number, string Name, bool Remote)
{
model.Number = Number;
return View("Register", model);
}
odpovede:
2 pre odpoveď č. 1Myslím, že sa k tomu možno blížite.
Ak na vyplnenie svojho pohľadu používate reťazec dotazu, urobte to radšej takto:
public ActionResult WriteRegistration(string Number, string Name, bool Remote)
{
// Instantiate a new model here, then populate it with the incoming values...
RegisterModel model = new RegisterModel() { Number = Number, Name = Name, Remote = Remote };
return View("Register", model);
}
Ak hľadáte čistú adresu URL, mali by ste zvážiť použitie testu POST ... to je vytvorenie formulára a odoslanie pomocou tlačidla na odoslanie. V takom prípade by ste postupovali takto:
[HttpPost]
public ActionResult WriteRegistration(RegisterModel model)
{
// Model binding takes care of this for you, no need to set it up yourself.
// ...but I"m guessing you"d do some logic here first.
return View("Register", model);
}
Myslím, že váš pôvodný kód kombinoval oba prístupy.
1 pre odpoveď č. 2
Ak chcete vrátiť čistú adresu URL, musíte mapovať trasu, do svojho súboru Global.asax pridajte v hornej časti nasledujúce RegisterRoutes
:
routes.MapRoute(
"WriteRegistration",
"Account/WriteRegistration/{Number}/{Name}/{Remote}",
new {controller="Account", action="WriteResistration"},
new {productId = @"d+" }
);
potom /Account/WriteRegistration/251911083837045755/All/False
sa zhoduje.
Ak chcete získať hodnoty do zobrazenia, odovzdajte ich cez viewdata a nastavte predvolené hodnoty polí formulára na hodnoty v viewdata.
-1 pre odpoveď č. 3
Verím, že môžete zavolať ModelState.Clear (), aby ste odstránili všetky chyby generované ModelBinding. To by sa malo zbaviť chýb pri overovaní pri prvom načítaní tejto stránky.