我是C#的新手,正在创建我的第一个MVC项目,并且很难找到将不同类型的3个参数传递给控制器动作的方法。这是我的控制器方法:
public ActionResult Create(Notification notification, string hash, list<int> users){
//code inside method irrelevant...
}
和我的通知模型:
public class Notification
{
public int ID { get; set; }
public string ApplicationID { get; set; }
public string Description { get; set; }
public System.DateTime DateStamp { get; set; }
}
在我添加List&lt;&gt;之前参数通过如此发布数据(或查询字符串)工作正常:
ApplicationID=1&Description=yo&hash=abcdefg
它神奇地知道两个参数('ApplicationID'和'Description')属于通知对象。但现在我想添加一个列表&lt;&gt;整数。
这是可以完成的吗?你将如何格式化传递的数据/查询字符串?
答案 0 :(得分:3)
这是可以做的事吗
是
以及如何格式化传递的数据/查询字符串?
像这样:
ApplicationID=1&Description=yo&hash=abcdefg&users=1&users=2&users=3
或者你喜欢这样:
ApplicationID=1&Description=yo&hash=abcdefg&users[0]=1&users[1]=2&users[2]=3
另外,您可能会发现following blog post是一本有用的读物。
但在将控制器操作签名转换为一些spaghettified代码和代码读者之前,必须水平循环几个屏幕以查看此操作所需的数百万个参数,停止疯狂并引入视图模型:
public class CreateViewModel
{
public Notification Notification { get; set; }
public string Hash { get; set; }
public List<int> Users { get; set; }
}
然后:
public ActionResult Create(CreateViewModel model)
{
//code inside method irrelevant...
}
然后:
notification.applicationID=1¬ification.description=yo&hash=abcdefg&users[0]=1&users[1]=2&users[2]=3