Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 使用Jquery Ajax和变量数据呈现局部视图_Asp.net Mvc 3_Jquery_Renderpartial - Fatal编程技术网

Asp.net mvc 3 使用Jquery Ajax和变量数据呈现局部视图

Asp.net mvc 3 使用Jquery Ajax和变量数据呈现局部视图,asp.net-mvc-3,jquery,renderpartial,Asp.net Mvc 3,Jquery,Renderpartial,我已经读过了,但是我不知道如何从用户那里获取数据。下面是我正在使用的ajax jquery。我知道(或至少认为)这不能造成部分的错误。但它一直工作,直到渲染失败。我想这可能会有帮助 $.ajax( { type: 'POST', contentType: 'application/json; charset=utf-8', data: "{'test':" + "'" + dateText + "'}", dat

我已经读过了,但是我不知道如何从用户那里获取数据。下面是我正在使用的ajax jquery。我知道(或至少认为)这不能造成部分的错误。但它一直工作,直到渲染失败。我想这可能会有帮助

 $.ajax(
     {
         type: 'POST',
         contentType: 'application/json; charset=utf-8',
         data: "{'test':" + "'" + dateText + "'}",
         dataType: 'json',
         url: 'Site/Grab/',
         success: function (result) {
         alert('Success');
         },

         error: function (error) {
            alert('Fail');
         }
      });
这是我的控制器

[HttpPost]
    public ActionResult Grab(string test)
    {
        DateTime lineDate= Convert.ToDateTime(test);
        List<Info> myInfo= GameCache.Data(lineDate);
       return PartialView("_PartialView", myInfo);
    }
[HttpPost]
公共操作结果抓取(字符串测试)
{
DateTime lineDate=Convert.ToDateTime(测试);
List myInfo=GameCache.Data(lineDate);
返回PartialView(“PartialView”,myInfo);
}

好的,有两件事要尝试:

1)
dataType
是ajax调用的预期结果。在您的例子中,您的发送JSON,但接收HTML。
content-type
参数指定您拥有的请求(并且您拥有的是正确的)。因此,数据类型应为:

dataType: 'html',
2) 您需要序列化JSON。尝试抓取轻量级库并字符串化'

var test = { test: 'testvalue' };
$.ajax {
   ...
   data: JSON.stringify(test),
   ...
});
比试图用qoatations强制JSON字符串容易得多。创建一个常规JS变量,然后将其字符串化

代码的其余部分看起来很好

如果部分视图本身的HTML/标记有问题,请在调试模式下运行,Visual Studio应在导致问题的标记行中停止

额外提示:ASP.NET MVC 3包含内置的JSON模型绑定。因此,您可以创建与JSON对象字段匹配的基本POCO,然后在action方法中将其作为强类型对象接受:

[HttpPost]
public ActionResult Grab(MyJsonObject obj) 
{
   DateTime lineDate= Convert.ToDateTime(obj.test);
   List<Info> myInfo= GameCache.Data(lineDate);
   return PartialView("_PartialView", myInfo);
}
[HttpPost]
公共行动结果抓取(MyJsonObject obj)
{
DateTime lineDate=Convert.ToDateTime(对象测试);
List myInfo=GameCache.Data(lineDate);
返回PartialView(“PartialView”,myInfo);
}

由于您只发送一个参数,这太过分了-但是如果您有两个以上的参数,那么使用JSON POCO是值得的。

将控制器代码更改为:

public ActionResult Grab(string test) {
  DateTime lineDate= Convert.ToDateTime(test);
  List<Info> myInfo= GameCache.Data(lineDate);

  return Json(new { data = this.RenderPartialViewToString("_PartialView", myInfo) });
}
公共操作结果抓取(字符串测试){
DateTime lineDate=Convert.ToDateTime(测试);
List myInfo=GameCache.Data(lineDate);
返回Json(new{data=this.RenderPartialViewToString(“\u PartialView”,myInfo)});
}

如果它一直工作到尝试渲染局部视图,则问题最有可能出现在局部视图的标记中。请提供该代码以及您收到的错误。当我将数据类型切换为html时,问题已得到修复。“RenderPartialViewToString()”方法存在于何处?此处还是此处