/ / Vrátiť zobrazenie s obývanými poliami? - asp.net-mvc, asp.net-mvc-3

Vrátiť zobrazenie s vyplnenými políčkami? - asp.net-mvc, asp.net-mvc-3

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ď č. 1

Myslí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.