C# 使用特殊字符过帐jQuery数据

C# 使用特殊字符过帐jQuery数据,c#,jquery,asp.net,asp.net-mvc,post,C#,Jquery,Asp.net,Asp.net Mvc,Post,我有一个很奇怪的问题。问题是这样的。。。当我尝试将字符串传递给我的控制器action.NET MVC时,这个: Small Bubble Roll 3/16" x 1400' x 12" Perforated 3/16 Bubbles 1400 Sq Ft Wrap 我检查了控制台,发现服务器内部错误500。。。更糟糕的是,我测试了这篇文章是否能与不同类型的标题一起使用,比如:super duper amoled TV或类似的东西,而且它能工作。。我怀疑这个问题是因为字符串包含特殊字符,如“a

我有一个很奇怪的问题。问题是这样的。。。当我尝试将字符串传递给我的控制器action.NET MVC时,这个:

Small Bubble Roll 3/16" x 1400' x 12" Perforated 3/16 Bubbles 1400 Sq Ft Wrap
我检查了控制台,发现服务器内部错误500。。。更糟糕的是,我测试了这篇文章是否能与不同类型的标题一起使用,比如:super duper amoled TV或类似的东西,而且它能工作。。我怀疑这个问题是因为字符串包含特殊字符,如“and…”

这是post方法本身:

var postData = {
    comment: $('#TextArea1').val(),
    rating: $('input[name=rating]:checked').val(),
    keyword: '@Session["Title"]'
};
首先是帖子数据,现在是帖子本身:

$.post("/Analyze/SaveWatchList", postData)
    .done(function (response) {
        // do something with the response here...
    });
});
现在控制器动作本身:

[ActionName("SaveWatchList")]
[HttpPost]
public ActionResult SaveWatchList(string comment, string rating, string keyword)
{

}
我上面展示的标题本身根本不会触发动作。。相反,我只是在控制台中得到内部服务器错误500

如何修复此问题?

您可以序列化postData,并期望在操作处有一个请求对象,该对象可以进一步反序列化以获取单个属性

型号:

public class ExampleRequest {
  public string comment {get; set;};
  public string rating {get; set;};
  public string keyword {get; set;};
}
控制器操作:

[ActionName("SaveWatchList")]
[HttpPost]
public ActionResult SaveWatchList(ExampleRequest req)
{ 
  var comment = req.comment;
  var rating = req.rating;
  var keyword = req.keyword;
}
更新:

Json对象:

var postData = {
      comment: $('#TextArea1').val(),
      rating: $('input[name=rating]:checked').val(),
      keyword: '@Session["Title"]'
};

您可以尝试注释:encodeURIComponent$'TextArea1'。val,在第一个发布的字符串中没有特殊字符会使ASP代码出错。您是否尝试过单步执行该操作以查看异常情况?@Rorymcrossan当我在关键字参数中将此值作为字符串传递时,该操作根本不会被触发。。。真的odd@Satpal在整个post数据对象上或仅在关键字参数上??如果您在控制台的“网络”选项卡中检查请求,您将看到错误页面的HTML,该页面应为您提供一个异常跟踪,您可以使用该跟踪来诊断确切的问题。在这种情况下,当我这样做时,对象内部的所有参数均为null=any知道为什么会发生这种情况吗?哪个属性是带有特殊字符的字符串?您的@Session[Title]包含什么?当然,不要发送整个对象,而是键入cast-to-string并使用关键字propertyYes将该值传递给控制器。