如何在cshtml中的<script>标签中设置TempData

时间:2015-05-19 13:10:02

标签: jquery razor asp.net-mvc-5

我正在尝试在&lt; script&gt; 标记内的 cshtml 中设置 TempData 。以下是我的代码。

&#xA;&#xA;
  $(“#btnGetResult”)。click(function(){&#xA; debugger;&#xA; var JSONString = JSON.stringify($(“#JSONString”)。val());&#xA;'@ TempData [“JSON”]'= $(“#JSONString”)。val();&#xA;  
&#xA;&#xA;

我得到的错误是

&#xA;&#xA;
 分配中的左侧无效&#xA;  
&#xA;&#xA;

我在设置 TempData [“JSON”] 时遇到了什么错误,因为我必须在我的控制器中使用这个tempdata。

&#xA;&#xA;

这是我的代码,其中 put 是一个div,我正在尝试加载局部视图。当我通过JSONSTRING时,我得到了js中的整个JSONSTRING,但只有 [{传递给控制器​​。其余的都被滑落。

&#xA;&#xA;
  _OutPut是局部视图&# xA;&#xA; $(“#put”)。load('@ Url.Action(“_ OutPut”,“API”)'+&#xA;'?UD ='+ $(“#UD”)。 val()+&#xA;'&amp; JSONString ='+ JSONString&#xA;);&#xA;  
&#xA;

1 个答案:

答案 0 :(得分:0)

我的猜测是,您可以将处理_Output部分的操作方法更改为HTTP Post而不是GET,以避免JSON过长或发布非法字符(IIS默认最大值为4096)。如果它没有发布完整的JSON,那么你需要查看&#34;#JSONString&#34;的值。元素,看它是否有好的数据。

控制器:

[HttpPost]
public ActionResult GetOutputPartial(string UD, string JSONString)
{
    // youll need to deserialize JSONString here most likely

    // return PartialView just like you were doing before
}

Javascript in view:

$.ajax({
    url: "@Url.Action("GetOutputPartial", "CONTROLLERNAME")",
    data: { ud: $("#UD").val(), JSONString: $("#JSONString").val() },
    cache: false,
    type: "POST",
    dataType: "html",
    success: function (data, textStatus, XMLHttpRequest) {
        $("#put").html(data);
    }
});

或者你可以使用jquery的加载,如果你喜欢POST,如果你给它一个对象:

$("#put").load('@Url.Action("GetOutputPartial", "CONTROLLERNAME")', { ud: $("#UD").val(), JSONString: $("#JSONString").val() });