我有一个可以按照我的意愿运行的javascript函数:
<script language="javascript" type="text/javascript">
function dofunction(dropdown) {
debugger;
for (i = 0; i < 194; i++) {
if (dropdown[i].selected == true) {
var Shrt_ttls = dropdown[i].value.toString();
$.ajax({
url: "/ProgramSummary/Details?titl=" + Shrt_ttls//,
//type: 'Post'
});
i = 195;
}
}
return;
}
</script>
代码重定向到ProgramsummaryController到Details方法(在调试中一切正常,正确的值传递给方法,Details方法看起来像这样
public ActionResult Details(string titl)
{
using (var dc = new USP_Select_TRP_ProgramSummary_wShortNameDataContext())
{
string shrt_titles = titl;
if (shrt_titles == null)
{
shrt_titles = "3DELRR";
}
return View(dc.usp_Select_TRP_ProgramSummary_wShortName(shrt_titles).Single());
}
}
调用View并且似乎很好并且返回到_Layout.cshtml似乎都很好但是未显示详细信息视图,而是显示原始索引视图。好像我用的是
@Html.ActionLink("Resource(s)", "Details", "ProgramSummary", new { titl = "3DELRR"})
发生与之前相同的事件,而不是显示详细信息视图的“索引”视图。为什么第一种方式不起作用?
答案 0 :(得分:3)
您应该使用:
location.href = "/ProgramSummary/Details?titl=" + Shrt_ttls;
而不是Ajax,ajax只是javascript中的请求,除非你编写代码,否则它不会被浏览器显示。
答案 1 :(得分:0)
调用$.ajax
正在向您的控制器操作发出异步javascript请求。然后,您的控制器将返回View(html)作为响应。您需要使用该HTML并使用它执行某些操作:
$.ajax({
url: 'whatever',
success: function(data) {
$('#sometarget').html(data);
}
}
此外,由于这是一个AJAX请求,您应该返回一个PartialView而不是控制器中的完整视图:
return PartialView("SomePartialView", model);