Привязка модели и запросы GET?
-
12-09-2019 - |
Вопрос
Существует множество примеров привязки модели в HTML-формах, но мне интересно, возможно ли и если да, то как использовать привязку модели для запросов ActionLinks/GET.
Итак, учитывая следующую модель
public class Lurl
{
public string Str {get;set;}
public char Chr {get;set;}
public double Dbl {get;set;}
}
и следующий маршрут (я не уверен, как он будет сформирован;Я представляю его, чтобы показать, как мне хотелось бы, чтобы URL представлял свойства Str, Chr и Dbl)
routes.MapRoute(
"LurlRoute",
"Main/Index/{str}/{chr}/{dbl}",
new
{
controller = "Main",
action = "Index",
lurl = (Lurl)null
}
);
Я хотел бы использовать это таким образом в своем контроллере
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index(Lurl lurl)
{
/* snip */
}
и так на моей странице (два возможных варианта;есть еще?)
<div class="links">
<%Html.ActionLink("Link one", "Index", new { lurl = Model })%><br />
<%Html.ActionLink("Link two", "Index",
new { str = Model.Str, chr = Model.Chr, dbl = Model.Dbl })%>
</div>
Возможно ли это с помощью инфраструктуры привязки модели?И если да, то что нужно сделать с моими образцами, чтобы они заработали?
Решение
Я думаю, вам придется выбрать либо класс в качестве параметра, либо подход
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index(Lurl lurl)
{
/* snip */
}
или свойства как параметры приближаются
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index(string str, char chr, double dbl)
{
/* snip */
}
...хотя в классе в качестве параметра вы можете использовать метод «UpdateModel».Вы можете передать белый список параметров, которые хотите обновить с помощью этого метода, на тот случай, если вы хотите обновить только несколько значений в своей модели.
Кроме того, в вашем MapRoute какой параметр будет отображать карту в вашем пути маршрута?Я почти уверен, что здесь должна быть корреляция один к одному.
Другие советы
Вы также можете использовать папка индивидуальной модели.Также читайте этот.