微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET MVC通过ActionLink传递模型

单击ActionLink后,我想传递一个模型和一个int到一个控制器.
@Html.ActionLink("Next","Lookup","User",new { m = Model.UserLookupviewmodel,page = Model.UserLookupviewmodel.curPage },null)

它不起作用,而是通过模型的空白实例,当使用新的时候,它将会预期.

@Html.ActionLink("Next",Model.UserLookupviewmodel,null)

工作.

调节器

[HttpGet]
public ActionResult Lookup(UserLookupviewmodel m,int page = 0)
{
    return this.DoLookup(m,page);
}

查看模型

public class UserLookupviewmodel
{
    public int curPage { get; set; }

    [display(Name = "Forenames")]
    public string Forenames { get; set; }

    [display(Name = "Surname")]
    public string Surname { get; set; }

    [display(Name = "dob")]
    public DateTime? dob { get; set; }

    [display(Name = "Post code")]
    public string Postcode { get; set; }
}

我们如何将他们传递在一起? Lookup方法的参数与ActionLink中的命名属性相匹配.

解决方法

您不能使用ActionLink通过链接传递属性,但您可以执行以下操作来获得相同的行为.
<form action="/url/to/action" Method="GET">
  <input type="hidden" name="Property" value="hello,world" />
  <button type="submit">Go To User</button>
</form>

如果您创建一个帮助程序来生成这些GET表单,那么您将能够像普通的链接按钮那样进行样式化.我唯一要提醒的是,页面上的所有表单都易于修改,因此我不会相信数据.当你到达你要去的地方时,我宁愿再次拉出数据.

创建搜索操作时,我使用上面的技术,并希望保留搜索记录并保持后退按钮的工作.

希望这可以帮助,

哈立德:)

附:

原因是这样的.

@Html.ActionLink("Next",null)

是因为ActionLink方法的参数列表被概括为一个对象,所以它将需要任何东西.它将对该对象执行的操作是将其传递给RouteValueDictionary,然后根据该对象的属性尝试创建一个querystring.

如果你说这个方法在上面工作,你也可以尝试添加一个名为Id的viewmodel的新属性,它将像你想要的那样工作.

原文地址:https://www.jb51.cc/aspnet/250661.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐