我在MVC3 Razor视图引擎中有一个视图,如下图所示。现在我想确认连接操作输出显示在此链接文本下而不是新页面。我该怎么做这项工作?
请用示例代码说明。
我的观点像这样:
@model ESimSol.BusinessObjects.COA_ChartsOfAccount
@{
ViewBag.Title = "Dynamic Account Head Configure";
}
<h2>Dynamic Account Head Configure</h2>
<table border="0">
<tr>
<td> Select an Server Connection </td>
<td style="width:5px">:</td>
<td>@Html.DropDownListFor(m => m.DBConnections, Model.DBConnections.Select(x => new SelectListItem() { Text = x.ConnectionName, Value = x.DBConnectionID.ToString()}))</td>
</tr>
<tr>
<td> </td>
<td style="width:5px"></td>
<td>@Html.ActionLink("Confirm Connection", "ConformConnection")</td>
</tr>
</table>
AND我的控制器操作如下:
public ActionResult ConfirmConnection()
{
return PartialView();
}
答案 0 :(得分:0)
首先将标记移动到局部视图。之后定义一个渲染局部视图的动作方法。
[ChildActionOnly]
public ActionResult ConfirmConnection(COA_ChartsOfAccount model)
{
return PartialView("MyPartialView", model);
}
ChildActionOnly属性确保HTTP请求无法调用此操作方法。
然后,您可以随时使用Html.Action方法显示它。
@Html.Action("ConfirmConnection", "MyController", new { model = Model })
如果模型未显示,则忽略将模型作为参数传递。您可以在操作方法中检索它。
答案 1 :(得分:0)
我很喜欢使用jquery和ajax来做这种事情...... http://api.jquery.com/jQuery.ajax/
如果您正在关注典型的MVC模型,那么您可以使用类似的内容向页面添加操作链接。
@Html.ActionLink("controller", "action", args);
但我会采用ajax驱动的方法......
<script type="text/javascript">
var ajaxBaseUrl = '@Url.Action("yourController", "ConformConnection", new { args })';
$(link).click(function () {
var currentElement = $(this);
$.ajax({
url: ajaxBaseUrl,
data: { any other queryString stuff u want to pass },
type: 'POST',
success: function (data) {
// action to take when the ajax call comes back
}
});
});
});
</script>