Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net ViewBag在视图中读取字符_Asp.net_Razor - Fatal编程技术网

Asp.net ViewBag在视图中读取字符

Asp.net ViewBag在视图中读取字符,asp.net,razor,Asp.net,Razor,我在我的视图中使用了一个ViewBag,并且发现如果它们立即跟随ViewBag属性的读取,它将从视图中读取字符,例如 <input type="hidden" name="client" value=@(@ViewBag.myVal)/> 如果myVal的值为“somevalue”,则ViewBag属性将解析为“somevalue/”。在ViewBag后添加空格或将其括在双引号中可以解决此问题 发生这种情况是因为ViewBag属性直到运行时才解析吗?它似乎理解“>”是结束括号,

我在我的视图中使用了一个ViewBag,并且发现如果它们立即跟随ViewBag属性的读取,它将从视图中读取字符,例如

<input type="hidden" name="client" value=@(@ViewBag.myVal)/>

如果myVal的值为“somevalue”,则ViewBag属性将解析为“somevalue/”。在ViewBag后添加空格或将其括在双引号中可以解决此问题

发生这种情况是因为ViewBag属性直到运行时才解析吗?它似乎理解“>”是结束括号,并没有将其附加到字符串中


谢谢

通常,HTML属性值周围应该有双引号:

<input type="hidden" name="client" value="@(@ViewBag.myVal)"/>

这可以防止出现您正在描述的问题。由于您没有专门定义属性值的结束,.NET将把/作为它的一部分。正如@HereticMonkey所指出的,反正你不需要结束斜杠。但是,无论如何,你都应该在你的价值观周围加上引号。如果您的值中有一个空格,它将在您不希望的空格处中断。例如,如果myValue=“My Client Name”,您将得到如下呈现的标记:

<input type="hidden" name="client" value=My Client Name/>


正如您所猜测的,它最终将返回一个值“My”,因为空格指定了属性的结尾。在它周围加上引号。

如果不在HTML中引用属性,您就会面临这样的风险。另外,对于
输入
,您不需要
/
(不管怎样,在HTML中——如果您使用的是XHTML,您需要这样做,但是您也需要引用所有属性)。我理解为什么代码最初是错误的,以及如何修复它。我的问题是为什么“/”被解释为字符串的一部分?如果不使用双引号来描述字符串,它会寻找其他东西来确定字符串是否完成。它查找一个空格(您没有)或结束标记括号。它不考虑斜线作为结束符号。我猜是因为它现在在HTML5中是可选的,但我不确定。