【问题标题】:Url.Action parameters?Url.Action 参数?
【发布时间】:2011-09-10 20:15:47
【问题描述】:

在我拥有的列表控制器中,

 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 的记录。但是当我给contact="calgary, vancouver"时,网页会出错。

如何调用Url.Action 中的两个参数。我尝试了以下方法,但这似乎也错了。

  <a href="<%:Url.Action("GetByList","Listing" , new {name= "John" , contact= " calgary, vancouver" })%>"><span>People</span></a>

【问题讨论】:

    标签: asp.net html asp.net-mvc-2 url.action


    【解决方案1】:

    以下是正确的重载(在您的示例中,您缺少关闭 }routeValues 匿名对象,因此您的代码将引发异常):

    <a href="<%: Url.Action("GetByList", "Listing", new { name = "John", contact = "calgary, vancouver" }) %>">
        <span>People</span>
    </a>
    

    假设您使用的是默认路由,这应该会生成以下标记:

    <a href="/Listing/GetByList?name=John&amp;contact=calgary%2C%20vancouver">
        <span>People</span>
    </a>
    

    这将成功调用 GetByList 控制器操作并传递两个参数:

    public ActionResult GetByList(string name, string contact) 
    {
        ...
    }
    

    【讨论】:

    • @user787788,你遇到了什么问题? 不接受两个参数是什么意思?谁不接受?您收到错误消息吗?你的控制器动作没有命中吗?你有错误的价值观吗?具体一点。
    • 当我给出两个参数时,aspx 页面甚至没有点击控制器。它在页面本身中发现错误。我有一个默认的例外,叫做东西已经磨损。 aspx 去那里
    • @user787788,错误是什么?您收到的确切消息?
    • 错误是,您可能输入了错误的地址(URL)。
    • @DarinDimitrov,我知道这是一篇非常老帖子,但我看到你在线。我不认为您知道如何动态传递参数(不像“John”那样硬编码)?
    【解决方案2】:

    这适用于 MVC 5:

    <a href="@Url.Action("ActionName", "ControllerName", new { paramName1 = item.paramValue1, paramName2 = item.paramValue2 })" >
        Link text
    </a>
    

    【讨论】:

      【解决方案3】:

      即使文档说它是使用 ParseQueryString 实用程序的 NameValueCollection,您也可以返回一个名为 HttpValueCollection 的私有集合。 然后手动添加键,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>
      

      【讨论】:

        【解决方案4】:

        这是另一种简单的方法

        <a class="nav-link"
           href='@Url.Action("Print1", "DeviceCertificates", new { Area = "Diagnostics"})\@Model.ID'>Print</a>
        

        @Model.ID在哪里是参数

        这里还有第二个例子。

        <a class="nav-link"
           href='@Url.Action("Print1", "DeviceCertificates", new { Area = "Diagnostics"})\@Model.ID?param2=ViewBag.P2&param3=ViewBag.P3'>Print</a>
        

        【讨论】:

          【解决方案5】:

          您还可以在 ASP.Net MVC 中执行以下操作

          <a href="@Url.Action("GetByList", "Listing",new {area = "Admin"})'
          + @Model.Id + '?name ="John"&contact ="calgary, vancouver"'+'"'>
              <span>People</span>
          </a>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-08-21
            • 1970-01-01
            • 1970-01-01
            • 2020-07-09
            • 1970-01-01
            • 2011-06-16
            • 1970-01-01
            • 2012-05-31
            相关资源
            最近更新 更多