Asp.net mvc 3 使用Jquery Ajax和变量数据呈现局部视图
我已经读过了,但是我不知道如何从用户那里获取数据。下面是我正在使用的ajax jquery。我知道(或至少认为)这不能造成部分的错误。但它一直工作,直到渲染失败。我想这可能会有帮助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(
{
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()”方法存在于何处?此处还是此处