我的主视图中有一个部分视图,其中列出了许多项目。 Razor已经为我正确生成了这个局部视图,并插入了动作链接(使用@ Html.ActionLink命令),指向控制器上的动作并发送正确的id。 一切正常但我希望保持这样,不必返回任何东西!
现在我被迫发回一些东西(内容,视图,重定向等),它改变了主视图,我不希望这样。
我想要做的就是在服务器上采取行动并将其留在那里。 我还能做什么?
由于
@model IEnumerable<PopupForm.Models.BOExplorerItem>
<h3>Explorer (partial)<br />
There are @Model.Count() explorer items.
</h3>
<ul class="ulexplorer">
@foreach (var item in Model)
{
<li>
<div class="boitem">
<h5>@item.FullName [<i> @item.Code </i>]</h5>
<span>Level: @item.Level</span>
@Html.ActionLink("Select", "SelectEntity", "Explorer", new { code = @item.Code }, null)
</div>
</li>
}
</ul>
答案 0 :(得分:0)
您可以做的是听取链接的点击事件并进行ajax调用而不是正常的重定向行为。让ajax调用你想要执行的代码。
因此,改变你的链接,将css类应用于我们的链接,以便我们可以将它用作我们的jQuery元素选择器。
@Html.ActionLink("Select", "SelectEntity", "Explorer",
new { code = @item.Code }, new { @class="ajaxLink"})
现在有一些javascript可以绕过点击事件
$(function(){
$("a.ajaxLink").click(function(e){
var _item=$(this);
e.preventDefault(); //prevent default behaviour
$.get(_item.attr("href");
});
});
如果您希望Action方法在正常的非ajaxified请求上执行正常(返回View / Other内容),您可以添加if条件检查以查看请求是否为ajax
public ActionResult SelectEntity()
{
if (Request.IsAjaxRequest())
{
//Execute your method and return a Json result to keep the compiler happy.
return Json(new {Status="Success"},JsonRequestBehavior.AllowGet);
}
else
{
//Return the normal view,
return View();
}
}