我有这个动作方法SearchAroundMe(),然后有人认为它会渲染视图“NoViewHasThisName”,但令我惊讶的是该方法坚持渲染默认视图“SearchAroundMe”,如何制作动作方法呈现“NoViewHasThisName”视图?
我已将此问题上传到Skydrive的简单测试应用程序:https://skydrive.live.com/?cid=5c0bc0a6f7bdc3c6#cid=5C0BC0A6F7BDC3C6&id=5C0BC0A6F7BDC3C6%21164
如果您只是运行该应用程序,您将看到问题。因为我使用位置感知浏览器,应用程序会要求津贴来跟踪您的身体状况,不要担心这一点,因为我没有收集任何信息或做任何不好的事情。
**[HttpPost]
public ActionResult SearchAroundMe(double latitude, double longitude)
{
return View("NoViewHasThisName");
}**
答案 0 :(得分:1)
你正在做一个ajax帖子,但你实际上并没有对结果做任何事情。
你根本不会离开这个页面。在允许您的位置后查看Firebug,它会执行帖子并返回视图“NoViewHasThisName”,但是您没有看到它,因为您还没有定义如何处理结果。
用此替换您的.post
来电,您会明白我的意思
$.ajax("News/SearchAroundMe", {
type: "POST",
async: false,
data: { latitude: latitude, longitude: longitude },
success: function (response) {
$("body").html(response);
}
});
显然这不是你想要做的,但这只是一个例子。
答案 1 :(得分:0)
只需将路径放到要返回的NoViewHasThisName.aspx
视图中:
[HttpPost]
public ActionResult SearchAroundMe(double latitude, double longitude)
{
return View("~/Views/NoViewHasThisName.aspx");
}
答案 2 :(得分:0)
你可以试试这个:
return RedirectToAction("Action", "Controller");
创建一个空行动:
public ActionResult NoViewHasThisName()
{
return View();
}
答案 3 :(得分:0)
感谢布兰登,你昨天的观察对于追踪问题非常重要。我找到了问题的解决方案。使用jQuery.post()会导致一些问题,但是当我使用表单提交切换到从视图传输数据到控制器时,突然之间就没有问题: - )
@using (Html.BeginForm("SearchAroundMe","News"))
{
@Html.Hidden("latitude");
@Html.Hidden("longitude");
}
var latField = $("#latitude");
var longField = $("#longitude");
latField.val(latitude);
longField.val(longitude);
$('form').submit();