ASP.NET MVC通过ActionLink传递模型

前端之家收集整理的这篇文章主要介绍了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的新属性,它将像你想要的那样工作.

猜你在找的asp.Net相关文章