Html.RenderPartial不产生价值(Html.RenderPartial does no

2019-09-18 04:07发布

美好的一天,所有的。

我知道,这是在MVC方面一个非常基本的问题,但我不能为我得到@ Html.RenderPartial的生活没有给我的错误。 我使用VB.NET和剃刀。 我已经在网上找到的大多数示例都是用C#,这是不是我很难转换,但这个简单的一个人把我难住了。 这是在我的索引视图,所呈现由_Layout.vbhtml:

@Section MixPage
    @Html.RenderPartial("_MixScreen", ViewData.Model)
End Section

以上表达式中不产生的值。

今天早上我已经看过了好一阵子,并且是我采取的例子页面,如下所示:

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

并且该控制器正在从在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);
        }
    });
}

如果有更好的方式来此更新的模型返回视图,仅更新我所有的耳朵这个局部视图。 但这个问题的前提是:为什么不的RenderPartial产生价值?

Answer 1:

那么,来自客户端的问题,那就是你期待的html在客户端不是一个JSON,记住,返回一个视图,基本上你返回视图编译这是在html变更预计在结果的数据类型为HTML

$.ajax({
    type: "POST",
    url: theUrl,
    contentType: "application/json",
    dataType: "html",
    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);
    }
});

此外,我建议你使用该方法的负载 ,这是AJAX的一个短版,总是假定预期的结果这是一个HTML和它; S追加到你所需要的元素的身体

第二。 如果要加载的部分从你的布局像这样做

 //note's that i'm calling the action no the view
 @Html.Action("UpdateFormulation","yourController", new { model = model}) //<--- this is code in c# don't know how is in vb


Answer 2:

Html.RenderPartial直接写入响应; 它没有返回值。 因此,你必须使用一个代码块中。

@Section MixPage
    @Code
        @Html.RenderPartial("_MixScreen", ViewData.Model)
    End Code
End Section

你也可以使用Html.Partial()不代码块做同样的事,因为部分()返回一个字符串。

@Section MixPage
    @Html.Partial("_MixScreen", ViewData.Model)
End Section


文章来源: Html.RenderPartial does not produce a value