我的视图称为Survey.cshtml
。我当前的网址是http://localhost:17471/Campaign/Survey/6184
。
在此页面中,我有一个下拉菜单来选择语言。有英语和西班牙语。一个我选择语言,我想重新加载页面,因为一些上下文以不同的语言显示。我仍然希望保持相同的网址。
我的代码在Survey.cshtml
。
$("#id").change(function () {
var selectedValue = $(this).find('option:selected').text();
window.location.href = "@Url.Action("Survey1", "Campaign", new {id=Model.SurveyModel.CampaignId, languageName = "languageToken" })".replace("languageToken", selectedValue);
});
然而,它会转到网址http://localhost:17471/Campaign/Survey1/6184?languageName=Spanish
我的控制器CampaignController.cs
有方法。
public ActionResult Survey(int id)
{
// omitted code
return View(model);
}
[HttpPost]
public ActionResult Survey1(int id, string languageName)
{
// omitted here
var view = "Survey";
return View(view,model);
}
我在RouteConfig.cs中没有上述方法的路由。我对MVC路由不是很强。有时,我对使用http://site-address/page.html?param1=value1¶m2=value2
的{{1}}和使用http://site-address/page/value1/value2
形式的MVC ROUTING的旧的和好的HTTP URL进行了混淆。
所以帮助我。
答案 0 :(得分:1)
您的Survey1
操作已装饰[HttpPost]
,这意味着您必须使用客户端的POST方法。但是当您使用window.location.href
进行重定向时,它始终使用GET方法。您有两种选择:
[HttpPost]
。submit
事件,而不是使用window.location.href
。