Подтвердить что ты не робот

Привязки модели и запросы GET?

Есть несколько примеров привязки модели в 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>

Возможно ли это с инфраструктурой привязки модели? И если да, то что нужно сделать с моими образцами, чтобы заставить их работать?

4b9b3361

Ответ 1

Я думаю, вам нужно будет выбрать класс как подход к параметрам

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index(Lurl lurl)
{
   /* snip */
}

или свойства как параметры приближаются

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index(string str, char chr, double dbl)
{
    /* snip */
}

... хотя в классе в качестве параметрического подхода вы можете использовать метод "UpdateModel". Вы можете передать белый список параметров, которые хотите обновить с помощью этого метода, только если вы хотите обновить несколько значений в своей модели.

Также, в вашем MapRoute, какой параметр будет отображаться в вашем маршруте? Я уверен, что там должна быть некоторая корреляция.