Html.RenderPartial不生成值

Aar*_*ian 3 jquery renderpartial vb.net-2010 razor asp.net-mvc-3

好的一天,所有.

我知道这对于MVC而言是一个非常基本的问题,但我不能为我的生活得到@ Html.RenderPartial不给我错误.我正在使用VB.NET和Razor.我在网上找到的大多数例子都是用c#编写的,这对我来说并不难转换,但这个简单的例子让我感到难过.这是在我的索引视图中,由_Layout.vbhtml呈现:

@Section MixPage
    @Html.RenderPartial("_MixScreen", ViewData.Model)
End Section
Run Code Online (Sandbox Code Playgroud)

上面的表达式不会产生值.

今天早上我已经看了很长一段时间,我所采用的例子如下:

http://geekswithblogs.net/blachniet/archive/2011/08/03/walkthrough-updating-partial-views-with-unobtrusive-ajax-in-mvc-3.aspx

从控制器内部获取部分视图的HTML

最终,我要做的是从控制器返回并更新模型到局部视图:

    Function UpdateFormulation(model As FormulationModel) As ActionResult
        model.GetCalculation()
        Return PartialView("_MixScreen", model)
    End Function
Run Code Online (Sandbox Code Playgroud)

并且该控制器是从javascript中的表达式调用的:

function UpdateResults() {
    jQuery.support.cors = true;
    var theUrl = '/Home/UpdateFormulation/';
    var formulation = getFormulation();
    $.ajax({
        type: "POST",
        url: theUrl,
        contentType: "application/json",
        dataType: "json",
        data: JSON.stringify(formulation),
        success: function (result, textStatus) {
            result = jQuery.parseJSON(result.d);
            if (result.ErrorMessage == null) {
                FillMixScreen(result);
            } else {
                alert(result.ErrorMessage);
            }
        },
        error: function (xhr, result) {
            alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status);
            alert("responseText: " + xhr.responseText);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

如果有更好的方法将此更新的模型返回到视图并且仅更新此局部视图,我会全神贯注.但这个问题的前提是:为什么RenderPartial没有产生价值?

wal*_*erk 10

Html.RenderPartial直接写入响应; 它不会返回值.因此,您必须在代码块中使用它.

@Section MixPage
    @Code
        @Html.RenderPartial("_MixScreen", ViewData.Model)
    End Code
End Section
Run Code Online (Sandbox Code Playgroud)

您也可以使用不带代码块的Html.Partial()来执行相同的操作,因为Partial()返回一个字符串.

@Section MixPage
    @Html.Partial("_MixScreen", ViewData.Model)
End Section
Run Code Online (Sandbox Code Playgroud)