MVC3 Razor视图引擎中的局部视图

时间:2012-07-05 11:42:48

标签: asp.net-mvc-3

我在MVC3 Razor视图引擎中有一个视图,如下图所示。现在我想确认连接操作输出显示在此链接文本下而不是新页面。我该怎么做这项工作?

请用示例代码说明。

enter image description here

我的观点像这样:

@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();

        }

2 个答案:

答案 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>