Url.Action参数?
在上市控制器我有,
public ActionResult GetByList(string name, string contact) { var NameCollection = Service.GetByName(name); var ContactCollection = Service.GetByContact(contact); return View(new ListViewModel(NameCollection ,ContactCollection)); }
在ASPX页面我打电话,
<a href="<%:Url.Action("GetByList","Listing" , new {name= "John"} , new {contact="calgary, vancouver"})%>"><span>People</span></a>
我在ASPX代码中有一个问题…我可以把名字john的logging拉出来。 但是当我给联系人=“卡尔加里,温哥华”,网页出现错误。
我怎么能在Url.Action中调用两个参数。 我尝试了下面,但似乎也是错误的。
<a href="<%:Url.Action("GetByList","Listing" , new {name= "John" , contact= " calgary, vancouver" })%>"><span>People</span></a>
以下是正确的重载(在您的示例中,您正在丢失关于routeValues
匿名对象的closures}
,因此您的代码将引发exception:
<a href="<%: Url.Action("GetByList", "Listing", new { name = "John", contact = "calgary, vancouver" }) %>"> <span>People</span> </a>
假设您正在使用默认路由,则应生成以下标记:
<a href="/Listing/GetByList?name=John&contact=calgary%2C%20vancouver"> <span>People</span> </a>
这将成功调用传递两个参数的GetByList
控制器操作:
public ActionResult GetByList(string name, string contact) { ... }
您可以返回一个名为HttpValueCollection的私有集合,即使文档说这是使用ParseQueryString实用工具的NameValueCollection。 然后手动添encryption钥,HttpValueCollection为您做编码。 然后只需手动追加QueryString:
var qs = HttpUtility.ParseQueryString(""); qs.Add("name", "John") qs.Add("contact", "calgary"); qs.Add("contact", "vancouver") <a href="<%: Url.Action("GetByList", "Listing")%>?<%:qs%>"> <span>People</span> </a>