模型绑定和 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”的方法。您可以在参数白名单传给你想用这种方法,以防万一你只想在你的模型更新几个值更新。
此外,在你的图路线,哪些参数将在您的路线路径lurl地图?我敢肯定,必须有一个一对一的关系存在。
不隶属于 StackOverflow