【问题标题】:Send a string parameter to a controller (MVC3) from javascript (no ajax)从javascript(无ajax)向控制器(MVC3)发送字符串参数
【发布时间】:2013-05-19 06:05:32
【问题描述】:

我有这个简单的 javascript 代码:

var value = "I love programming";
window.location="Controller/Action/"+value;

在控制器页面中,我有这个:

public ActionResult(string value) {
   // do something
}

问题是来自控制器的value 参数。这始终为空。

为什么?

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

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

【问题讨论】:

  • 这应该起作用 window.location="Controller/Action?value="+yourValue

标签: javascript asp.net-mvc asp.net-mvc-3


【解决方案1】:

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

RouteTable.Routes.MapRoute(
    "ValueRoute",
    "{controller}/{action}/{value}",
    new
    {
        controller = "Yourcontroller",
        action = "Youraction",
        value = UrlParameter.Optional
    }
);

这都是最重要的事情,所以它可能不会发生在你身上。

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

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

【讨论】:

  • 哇!我应该使用id 而不是value 作为字符串?我说的对吗?
  • michael - 是的,这可以解决问题!虽然我假设你有一个使用“价值”参数的极端情况,因此是“新”路线:)
  • +1。 @MichaelSwan,如果您不想编辑路线;您可以使用名称-值对 window.location="Controller/Action?value="+yourValue 传递参数
  • sandeep - 是的,效果同样好(我将把它添加到给出 3 种选择的答案中
猜你喜欢
  • 2019-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 2017-10-31
  • 1970-01-01
  • 2023-03-20
相关资源
最近更新 更多