我在我的视图中使用了这个模型,它有一个名为数字列表的属性
public myModel{
public string listOfNumber {get; set;}
然后在我的控制器中,我用字符串值
填充它public myController{
public ActionREsult myMethod(){
....
myModelObj.listOfNumber = myModelObj.listOfNumber +"["+aNumber+"]";
return PartialView("test/_myPartialView", myModelObj);
在我看来我有这个
<input type="hidden" value=@Html.Raw(Json.Encode(Model.listOfNumber)) id="listNumb"/>
然后,我对console.log()
的值进行$("#listNumb").val()
并将其作为结果
"[1][4][3][23]"
我想知道引用来自哪里?因为当我将值传递给控制器时,使用模型绑定并调试它看起来像我得到这个\"[1][4][3][23]\"
似乎引号成为字符串的一部分?
修改
正如其中一个答案所示,它是在视图源上显示的内容。仅供参考,如果我在@Html.Raw(Json.Encode(Model.listOfNumber))
周围加上引文,则显示同样的事情并不重要。 ""[1][4][3][23]""
注意双引号,因为我没有:)
答案 0 :(得分:3)
您将属性编码为JSON对象,而JSON对象作为字符串包含引号。
想象一下不同的设置。如果你是在javascript中并且这样做了:
var someObj = @Html.Raw(Json.Encode(someValue));
...你希望变成javascript可以作为对象对待的有效对象,对吗?如果该值是一个字符串,那么这种方法的唯一方法就是字符串是否有引号。
让我感到惊讶的是,你的视图代码似乎没有包含引号,所以我希望字符串引号被解释为包装属性值。但也许Razor引擎会以某种方式为你或其他东西添加它们?或者您发布的代码可能不是您使用的确切代码?查看源时HTML看起来像什么?