我有一个<span>
,其值取决于条件:
@{
if(Session["Status1"]!=null){
<span id="currentStatus">Found</span>
}
else {
<span id="currentStatus">Not Found</span>
}
}
正如您所看到的,由于条件检查,永远不会有2 <span>
具有相同的ID currentStatus
。但是,Visual Studio 2012(不是社区也不是Express)正在给我一个警告:
此页面上的另一个对象已使用ID currentStatus。
如何摆脱此警告?
答案 0 :(得分:1)
正如this feedback所述,此行为按设计。
不幸的是, HTML验证程序并非旨在确定是否 由于服务器代码,有条件地发出了块。因此, 它只看到HTML,而不是if语句,并认为有两个 具有相同ID的元素。
要完全摆脱此警告,您可以创建一个变量并在单个span
元素中使用它:
@{
string status = (Session["Status1"] != null) ? "Found" : "Not Found";
}
<span id="currentStatus">@status</span>
或者将条件检查置于控制器操作方法中,并将结果分配给viewmodel字符串属性:
// Model
public class ViewModel
{
public string Status { get; set; }
}
// Controller
public ActionResult ActionName()
{
var model = new ViewModel();
model.Status = (Session["Status1"] != null) ? "Found" : "Not Found";
return View(model);
}
// View
@model ViewModel
<span id="currentStatus">@Model.Status</span>
注意:不幸的是我无法在VS 2013及以上版本中看到警告,因此它可能只影响某些版本的MVC(例如MVC 3)。
类似问题: