使用Model值包括引用ASP MVC4

时间:2014-03-27 23:06:47

标签: c# javascript asp.net asp.net-mvc asp.net-mvc-4

我在我的视图中使用了这个模型,它有一个名为数字列表的属性

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]""注意双引号,因为我没有:)

1 个答案:

答案 0 :(得分:3)

您将属性编码为JSON对象,而JSON对象作为字符串包含引号。

想象一下不同的设置。如果你是在javascript中并且这样做了:

var someObj = @Html.Raw(Json.Encode(someValue));

...你希望变成javascript可以作为对象对待的有效对象,对吗?如果该值是一个字符串,那么这种方法的唯一方法就是字符串是否有引号。

让我感到惊讶的是,你的视图代码似乎没有包含引号,所以我希望字符串引号被解释为包装属性值。但也许Razor引擎会以某种方式为你或其他东西添加它们?或者您发布的代码可能不是您使用的确切代码?查看源时HTML看起来像什么?