0

我有一个像这样的简单视图:

@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,指向 action OptOne。该操作需要 OptOneModel 类型的参数 pdModel。如您所见,我使用当前模型值对其进行实例化。但是当我的动作被执行时,登录属性为空,只有数据不为空。

  public ActionResult OptOne(OptOneModel pdModel)
  {
      return View(pdModel); // <-- Here only Data property is not null
  }

我迷路了。我看不出有什么问题。

4

3 回答 3

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);

或者

ActionLink(string linkText, string actionName, object routeValues)

@Html.ActionLink("Option 1", "OptOne", new OptOneModel{ Login = Model.Login, Data = DateTime.Now.Date});

希望这可以帮助。

于 2013-08-05T22:43:38.890 回答
1

您不能使用超链接来传递模型。它仅适用于邮政。

相反,您可以使用 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();
}
于 2013-08-05T20:32:34.893 回答
1

不幸的是,对于 ActionLink,您不能以这种方式将复杂类型传递给路由值。手动调用一个动作,我相信你可以,但不能用于链接。所以:

@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);
  }
于 2013-08-05T20:27:38.450 回答