将JSON数据传递给ASP.NET中的强类型部分视图

时间:2014-12-30 20:17:25

标签: asp.net json razor

问题
将javascript中的JSON数据传递给ASP.NET MVC强类型局部视图的最佳方法是什么?

详情
我正在使用VS2013 Express for Web在Win7机器上进行开发 我有一个使用类Workorder的强类型部分视图:

@model WebApplication1.Models.WorkOrder.WorkOrder
<h3>Partial Result:</h3>
Name: @Model.woName
<br />
SN: @Model.woSN
<br />

我在Razor视图页面上的javascript中进行了一次AJAX调用,返回名为&#34;数据&#34;的JSON数据:

function showPartial(data) {
    @{
        WorkOrder w = Json.Decode(<text>data</text>, WorkOrder);
        @Html.Partial("PartialWOTop", w);
    }
}

但是,视图页面无法正常处理。我收到以下错误:

 Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS1525: Invalid expression term '<'

Source Error:


Line 36:         function showPartial(data) {
Line 37:             @{
Line 38:                 WorkOrder y = Json.Decode(<text>data</text>, WorkOrder);
Line 39:                 @Html.Partial("PartialWOTop", y);
Line 40:             }


Source File: c:\Users\xupd48act\Documents\Computer\Dev\VS Projects\WebApplication1\WebApplication1\Views\BacklogTracker\Index.cshtml    Line: 38 

1 个答案:

答案 0 :(得分:2)

您正尝试将客户端代码注入部分视图的服务器端代。这不是MVC部分视图的工作方式。部分视图在页面提供给浏览器之前已经呈现(即在运行客户端jQuery之前很久)。

相反,您需要将数据POST / GET到控制器方法,根据该数据返回部分视图,然后通过将其插入页面来呈现返回的HTML。

e.g。像这样的东西:

function showPartial(data) {
    $.ajax({
       url: "controller/action",
       data: data,
       dataType: html,    // Expect back HTML
       success: function(html){
           $('#someelement').html(html);
       }
    });
}

或使用$.load的较短版本:

function showPartial(data) {
    $('#someelement').load( "controller/action", data );
}

服务器端MVC控制器方法需要获取数据并返回部分视图(现在可能就是这样)。 如果您需要更多详细信息,则需要显示控制器代码:)