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”的方法。您可以在参数白名单传给你想用这种方法,以防万一你只想在你的模型更新几个值更新。

此外,在你的图路线,哪些参数将在您的路线路径lurl地图?我敢肯定,必须有一个一对一的关系存在。

其他提示

您还可以使用 定制模型活页夹. 。另请阅读 .

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top