2015-09-13 5 views
0

Я работаю над небольшим проектом и в частичном режиме просмотра. Я проверяю, выбрана ли страница и выделяется меню.MVC Просмотр добавления цитат в атрибут html

var controller = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString().ToLower(); 

var home = string.Empty; 
var content = string.Empty; 

switch(controller) { 
    case "home": 
     home = "class=current"; 
     break; 
    case "content": 
     content = "class=current"; 
     break; 
} 

В представлении я тогда делаю:

<li @home><a href="/Home/Index">Home</a></li> 

Первоначально в моем коде я имел

home = "class='current'"; 

Обратите внимание, я имел цитаты вокруг него, но когда я выполнил код HTML, источник выглядит как

enter image description here

Так что, когда я удалить quatations и запустить его снова, так как он, добавив их в по умолчанию, это работает, несмотря на то, что отладчик выглядит

enter image description here

Так что проект работает, мой вопрос, почему это по умолчанию добавление котировок?

+0

Поскольку 'home' является переменной строки типа? – brroshan

+0

Почему это имеет значение? –

+0

try Html.Raw (@home) –

ответ

1

Я не уверен, что MVC добавляет кавычки, возможно, это делает Chrome DevTools. Если вы «Просмотрите источник страницы», я не думаю, что вы увидите цитаты.

Просто FYI, из-за такого рода вещей, которые я обычно не включают атрибут в таких строках, только значение ...

<li class="@home"> 
0

MVC не добавляет кавычки для @home. Если вы декомпилировать эту страницу, вы можете получить коды, как показано ниже:

public class _Page_Views_Home_Index_cshtml : WebViewPage<object> 
    { 
     // Methods 
     public override void Execute() 
     { 
      ((dynamic) base.ViewBag).Title = "Home Page"; 
      base.BeginContext("~/Views/Home/Index.cshtml", 0x27, 2, true); 
      this.WriteLiteral("\r\n"); 
      base.EndContext("~/Views/Home/Index.cshtml", 0x27, 2, true); 
      string str = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString(); 
      string str2 = string.Empty; 
      string str3 = string.Empty; 
      string str4 = str; 
      if (str4 != null) 
      { 
       if (!(str4 == "Home")) 
       { 
        if (str4 == "content") 
        { 
         str3 = "class=current"; 
        } 
       } 
       else 
       { 
        str2 = "class=current"; 
       } 
      } 
      base.BeginContext("~/Views/Home/Index.cshtml", 0x1a6, 9, true); 
      this.WriteLiteral("\r\n\r\n<div "); 
      base.EndContext("~/Views/Home/Index.cshtml", 0x1a6, 9, true); 
      base.BeginContext("~/Views/Home/Index.cshtml", 0x1b0, 4, false); 
      this.Write(str2); 
.... 
} 
} 

Методы Write будет, наконец, вызывает WebUtility.HtmlDecode метод, этот метод заменяет специальные символы, но не добавит кавычки.

Надеюсь, это поможет.