从javascript(无ajax)向控制器(MVC3)发送字符串参数

从javascript(无ajax)向控制器(MVC3)发送字符串参数,javascript,asp.net-mvc,asp.net-mvc-3,Javascript,Asp.net Mvc,Asp.net Mvc 3,我有以下简单的javascript代码: var value = "I love programming"; window.location="Controller/Action/"+value; 在控制器页面中,我有以下内容: public ActionResult(string value) { // do something } 问题是来自控制器的值参数。这总是空的 为什么? 参数类型是否限制为int?(不使用ajax) 我可以发送一个int到控制器,它可以正确处理信息。但不是字

我有以下简单的javascript代码:

var value = "I love programming";
window.location="Controller/Action/"+value;
在控制器页面中,我有以下内容:

public ActionResult(string value) {
   // do something
}
问题是来自控制器的
参数。这总是空的

为什么?

参数类型是否限制为int?(不使用ajax)


我可以发送一个int到控制器,它可以正确处理信息。但不是字符串。

您可能需要在global.asax中设置路由来处理字符串参数,即:

RouteTable.Routes.MapRoute(
    "ValueRoute",
    "{controller}/{action}/{value}",
    new
    {
        controller = "Yourcontroller",
        action = "Youraction",
        value = UrlParameter.Optional
    }
);
这些都是最重要的事情,所以这可能不会发生在你身上

[update 1]正如您在下面的评论中所说,将参数名称从value=>id更改应该可以解决问题,而无需求助于附加路由


[update 2]-根据sandeep的评论,您还可以选择url上的名称-值对,即window.location=“Controller/Action?value=“+yourValue

Doh!我应该使用
id
作为字符串,而不是
value
?我说得对吗?迈克尔-是的,那就行了!!虽然我假设您有一个使用“value”参数的边缘情况,因此“new”路由:)+1@MichaelSwan,如果你不想编辑路线;您可以使用名称-值对窗口来传递参数。location=“Controller/Action?value=“+yourValuesandeep-yup同样有效(我将把它添加到答案中,以给出3个备选选项该函数窗口。location=“Controller/Action?value=“+yourValue