我有一个像这样的简单视图:
@using MyProject.WebClient.Models
@model LoginClienteModel
<h1>@ViewBag.Title</h1>
@{
<text>
<h2>
<span>Olá @Model.Login . </span>
</h2>
<h3>
<span>Info: (@Model.ProperyOne)</span>
</h3>
</text>
}
<br/>
@Html.ActionLink("Option 1", "OptOne", "Home", new {pdModel = new OptOneModel{Login = Model.Login,Data = DateTime.Now.Date}});
显示此视图时,模型中的所有数据都会正确显示。你可以看到我有另一个ActionLink,指向行动OptOne。该操作需要OptOneModel类型的参数pdModel。如您所见,我使用当前模型值实例化它。 但是当执行我的Action时,Login属性为null,只有Data不为null。
public ActionResult OptOne(OptOneModel pdModel)
{
return View(pdModel); // <-- Here only Data property is not null
}
我迷路了。我看不出有什么问题。
答案 0 :(得分:1)
不幸的是,您无法将复杂类型传递给ActionLink的路径值。手动调用一个Action,我相信你可以,但不能用于链接。所以:
@Html.ActionLink("Option 1", "OptOne", "Home", new {pdModelId = Model.YourUniqueId, dateRendered = DateTime.Now.Date});
同时,服务器端:
public ActionResult OptOne(int pdModelId, DateTime dateRendered)
{
// retrieve model again based on your Id
return View(pdModel);
}
答案 1 :(得分:1)
您无法使用超链接传递模型。它只适用于Post。
相反,您可以使用routeValues生成查询字符串。
@Html.ActionLink("Option 1", "OptOne", "Home",
new { Model.Login, Data = DateTime.Now.Date }, null)
public ActionResult OptOne(string login, DateTime data)
{
// Do something with login and data.
return View();
}
答案 2 :(得分:1)
使用ActionLink
过载变异,
ActionLink(string linkText,string actionName,string controllerName,object routeValues,object htmlAttributes)
@Html.ActionLink("Option 1", "OptOne", "Home", new OptOneModel{ Login = Model.Login, Data = DateTime.Now.Date}, null);
OR
ActionLink(string linkText,string actionName,object routeValues)
@Html.ActionLink("Option 1", "OptOne", new OptOneModel{ Login = Model.Login, Data = DateTime.Now.Date});
希望这会有所帮助。