模型绑定和GET请求?

10 asp.net-mvc http-get model-binding

在html表单中有大量的模型绑定示例,但我想知道它是否可能,如果是这样,如何使用ActionLinks/GET请求的模型绑定.

所以,给出以下模型

public class Lurl
{
  public string Str {get;set;}
  public char Chr {get;set;}
  public double Dbl {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

和以下路线(我不确定这将如何形成;我提出它以显示我希望URL如何呈现属性Str,Chr和Dbl)

routes.MapRoute(
    "LurlRoute",
    "Main/Index/{str}/{chr}/{dbl}",
    new
    {
        controller = "Main",
        action = "Index",
        lurl = (Lurl)null
    }
);
Run Code Online (Sandbox Code Playgroud)

我想在我的Controller中以这种方式使用它

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index(Lurl lurl)
{
  /* snip */
}
Run Code Online (Sandbox Code Playgroud)

这种方式在我的页面中(两种可能的选择;还有更多吗?)

<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>
Run Code Online (Sandbox Code Playgroud)

这可能与模型绑定基础结构有关吗?如果是这样,我的样品需要做些什么才能使它们起作用?

Nic*_*ore 5

我认为你必须选择该类作为参数方法

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index(Lurl lurl)
{
   /* snip */
}
Run Code Online (Sandbox Code Playgroud)

或作为参数的属性接近

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

...虽然在类中作为参数方法,但您可以使用"UpdateModel"方法.您可以使用该方法传入要更新的参数白名单,以防您只想更新模型中的一些值.

此外,在MapRoute中,哪个参数将在您的路径路径中映射到?我很确定那里必须有一对一的关联.