如何通过锚标记调用带有任何MVC5控制器参数的索引视图?

时间:2018-05-30 14:20:34

标签: asp.net-mvc anchor

我有一个Mvc控制器

public class ApplicationsController : Controller
    {
        // GET: Applicants/Applications
        public ActionResult Index(Guid? ApplicationId)
        {
           //some work with the ApplicationId
            return View("Application Details");
        }


    }

我的另一个HTML页面中有一个锚标记,我想通过它来调用此控制器默认视图(索引视图)。网址应为:

http://localhost:66666/Applicants/Applications/xxxxxxxxxxxxxxxxxxxxxxxxx

我试图通过锚标记来调用它:

 <script id="applicationDetailstemplate" type="text/x-jsrender">
<a href="../../../Applicants/Applications/{{:id}})">{{:position}}</a>
 </script>

网址正常但行动永远不会被调用。如果我从锚标记中删除id,则会调用控制器视图,但ApplicationId为null。我怎样才能传递id?

2 个答案:

答案 0 :(得分:0)

我怀疑,除非您更改了默认路由规则,否则需要将其写为

../../../Applicants/Applications?ApplicationId={{:id}}

通常情况下,将ID放入路径(而不是查询字符串)的表单只有在操作方法签名中的变量实际上只是“id”(不是任何其他名称)时才有效。

此外,如果这是View的一部分,请考虑使用HTML帮助程序,以确保始终为路径的主要部分生成正确的URL,例如:

@Url.Action("Applicants", "Applications")?ApplicationId={{:id}}

答案 1 :(得分:0)

谢谢@Adyson 谢谢你的回答。实际上我知道你给出的答案,但在网址中我并不想要额外的申请人出现。所以我尝试了,我发现了:

1)<a href="../../../Applicants/Applications/Index/{{:id}}">{{:position}}</a>调用Index视图并传递Id。但在网址中,索引会来。

2)<a href="../../../Applicants/Applications">{{:position}}</a>可以通过此方法调用默认索引视图,网址为http://localhost:66666/Applicants/Applications

3)<a href="../../../Applicants/Applications/{{:id}}">{{:position}}</a>无论如何都不行。

最后我最终将索引视图重命名为详细视图并安顿下来。仍然知道不能调用索引,而不会出现在URL中,并且Id被传递到视图中。