在ASP.Net MVC3中的Razor视图中传递值到HREF

4
   <a href="@(Html.MyActionHref(controllerName: "MyController", actionName: "MyAction"))">

上面的代码生成了一个Razor视图的超链接。HTML帮助方法MyActionHref()创建了这个链接。当点击这个链接时,它会调用控制器中的一个操作方法。现在假设这个链接调用的操作控制器方法是有参数的,即:
public ActionResult MyAction(string myParams){}
(HTML帮助方法MyActionHref()甚至可以根据需要接受三个参数。) 如何从模型中传递这个额外的参数到控制器操作方法中?
比如说,
<a href="@(Html.MyActionHref(controllerName: "MyController", actionName: "MyAction",params: new {....} }))">  

有什么建议吗?

2个回答

20

当你可以简单地使用以下方法时,为什么要使用这样的辅助函数:

@Html.ActionLink(
    "some text", 
    "MyAction", 
    "MyController", 
    new { myParams = "Hello" }, 
    null
)

这将生成正确的锚点标签:

 <a href="/MyController/MyAction?myParams=Hello">some text</a>

如果myParams需要一个model.myValue怎么办? - SocialCircus
你难道不能只是这样做吗... new { myParams = Model.myValue }? - jcreamer898
如果这段代码在一个Jquery函数内部,我该如何传递一个变量作为myParams而不是"Hello"? - Sribin

7
您可以使用Url.Action方法,或者复制其行为。
@Url.Action(
   controllerName: "MyController", 
   actionName: "MyAction", 
   routeValues: new { id = 1 }
);

查看该方法的签名以找到你想要做的事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接