0

使用 ASP.NET MVC,我想在 JQuery 的按钮单击上调用控制器的操作。

控制器:

public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {

            return View();
        }
        public ActionResult PersonInfo(string name, string city)
        {
            // other code for assign ViewData
            return View();
        } 
    } 

我在 Index.chtml 页面中有两个文本框和一个按钮。我想显示像“ http://localhost:2526/PersonName ”这样的网址。对于城市,我想要可选的参数并且不想在 Url 中。所以,我映射的路线如下:

routes.MapRoute(
                "Default", // Route name
                "",
                 new { controller = "Home", action = "Index" } // Parameter defaults
            );

routes.MapRoute(
          "PersonInfo", // Route name
          "{name}", // URL with parameters
          new { controller = "Home", action = "PersonInfo", name= ""  , city = ""} // Parameter defaults

如果我在浏览器中输入“ http://localhot:2526/John ”之类的 Url,则 PersonInfo 视图显示成功。

我访问了与我的问题相关的链接。但我也想传递参数。

任何人都可以帮助我如何从 JQuery 调用按钮单击操作。

4

2 回答 2

0

您想在 Url.Action 方法中添加参数以避免主机末尾的 / 。

@Url.Action("PersonInfo","Home" , new {name=Model.Name, city=Model.City }) //我相信这会查看你的路线并生成 localhost:2526/John/JohnsCity

你的参数是你模型的一部分吗?如果是这样,上述将工作。如果不是,您可以使用 1AmirJalali 答案,但在附加参数之前替换 / ,因为如果它们参数不是您的模型的一部分,那么它们可能是通过 javascript 变量来的。

于 2012-12-23T16:10:23.310 回答
0

您可以将参数作为查询字符串传递,例如:

$('#buttonId').click(function(){
     document.location = 
    '@Url.Action("MyAction","MyController")'+'?'+'parameterToSend = @value';
});

你的链接会像

MyController/MyAction?parameterToSend=value
于 2012-12-23T12:59:35.723 回答