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的新属性,它将像你想要的那样工作.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....