停止将“”编码为Javascript中的引号
我有一个WebApi,它需要一个字符串参数。我将Api Url和参数作为viewbag从action发送到视图,这样我就可以对多个WebApi重用视图 我的管制员行动停止将“”编码为Javascript中的引号,javascript,c#,json,asp.net-mvc,asp.net-web-api,Javascript,C#,Json,Asp.net Mvc,Asp.net Web Api,我有一个WebApi,它需要一个字符串参数。我将Api Url和参数作为viewbag从action发送到视图,这样我就可以对多个WebApi重用视图 我的管制员行动 public ActionResult PreviousQuestions(String exam = "", int Number = 0) { ViewBag.uri = "/api/pmp/GetNumberofQuestionByExam";
public ActionResult PreviousQuestions(String exam = "", int Number = 0)
{
ViewBag.uri = "/api/pmp/GetNumberofQuestionByExam";
ViewBag.param = "{ Number: " + Number + ",Exam:\"First Term\"}";
return View();
}
我的javascript内部视图
$(document).ready(function () {
var uri ='@ViewBag.uri'; //Problem is here
var param = @ViewBag.param;
$.ajax({
url: uri,
type: 'GET',
data: param,
dataType: 'json',
success: function (data, textStatus, xhr) {
}
});
Web Api
public List<QuestionViewModel> GetPreviousQuestion(int Number, string Exam = "")
{
}
这会引发错误。我知道这很愚蠢,我错过了一些东西或类似于在操作中创建json的东西。有人能建议吗
JSON.parse(data.replace(/"/g,'"'));
将不起作用您在引号内有引号:
",Exam:\"First Term\"}"
更改您的内部引号,如下所示:
",Exam:\'First Term\'}"
您需要将js代码更改为:
var param = @Html.Raw(ViewBag.param)
默认情况下,Razor引擎将对所有内容进行编码。因此,您需要使用返回非HTML编码的标记的变量。尝试执行var param='@HTML.RawViewBag.param'您能给我console.logparam;在var param=@ViewBag.param;之后;?只需添加代码并告诉结果。@adiga您可以添加它作为答案,这样我就可以accept@holydragon…我找到了解决办法thanks@SreenathGanga然后一起删除引号没有xavier ajax无法识别该格式为字符串。我从@aldigaI获得的任何解决方案都非常确定不需要这些单引号。
var param = @Html.Raw(ViewBag.param)