c# - 使用模型值包括报价 ASP MVC4

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

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

public myModel{
 public string listOfNumber {get; set;}

然后在我的 Controller 中我用字符串值填充它

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"/>

然后我对 $("#listNumb").val() 的值执行 console.log() 并得到结果

"[1][4][3][23]"

我想知道这个报价是从哪里来的?因为当我将值传回 Controller 时,使用模型绑定(bind)并调试它看起来的样子,我得到这个 \"[1][4][3][23]\" 似乎引号成为字符串的一部分?

编辑

正如此处答案之一所建议的那样,它在查看源代码中显示的内容。仅供引用,如果我在 @Html.Raw(Json.Encode(Model.listOfNumber)) 周围加上引号并不重要,源代码显示了相同的内容。 ""[1][4][3][23]"" 注意双引号,因为我没有:)

最佳答案

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

想象一个不同的设置。如果您使用 javascript 并执行了以下操作:

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

...您希望它变成一个 javascript 可以将其视为对象的有效对象,对吧?如果该值是一个字符串,则其工作的唯一方法是该字符串周围有引号。

令我惊讶的是,您的 View 代码似乎不包含引号,因此我预计字符串引号会被解释为包装属性值。但也许 Razor 引擎会以某种方式为你添加这些内容或者什么?或者您发布的代码可能不是您正在使用的确切代码?查看源代码时,HTML 是什么样子的?

关于c# - 使用模型值包括报价 ASP MVC4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22701079/

相关文章:

c# - 将 Entity Framework Core SQLite 文件存储在项目相关的子目录中

javascript - 更改 child 的 html

asp.net - 查询字符串参数与常规参数 ASP.Net MVC 5

javascript - 使用 Laravel 路由的 HTML 应用程序中的 CSRF

c# - 存储过程输出参数返回@Value

c# - ASP.NET MVC 中的多个 CSS 文件包

c# - .NET MAUI Shell - 导航后显示汉堡包图标

c# - 自定义 DataGridViewCheckBoxCell 视觉更新在编辑模式下不起作用

c# - EF Code First,同一对象的两个导航属性

javascript - javascript中的 header 位置