2012-09-22 30 views
0

我正在開發MVC應用程序並使用剃刀語法。如何在JavaScript中使用HTML語法?

我想在cshtml文件中使用JavaScript中的HTML代碼,但是我對如何在JavaScript中使用雙引號在剃刀語法中感到困惑。這件事嗎?

這行代碼:

<span class="EmpName"> @Html.ActionLink(item.Owner.FullName, "Details", "EMployee", new { id = item.OwnerId }, new { @style = "color:#1A6690;" })</span> 

@Html.DisplayFor(ModelItem => item.CommentDateTime) 

<span class="EmpName"><button type="button" id = "@item.Id" class="deleteComment">Delete</button></span> 

而且我用JavaScript編寫下面的代碼,是嗎?

success: function (data) { 
    $("p.p12").append 
      ("<div style=\"background-color:#FAFAFA\";>Recently Added... <br /><a href=\"../../Employee/Details/" + data.OwnerID + "\">" + data.OwnerName + "</a>" 
      + data.cmtDateTime + "<button type=\"button\" id = \" + data.Id + "\class=\"deleteComment\">Delete</button></span><br />" + data.msg + "</div>");      
} 

回答

1

,我已經在JScript下面寫代碼是這樣嗎?

不,看起來不正確。生成的HTML已損壞。你需要更小心的語法,東西喜歡屬性之間的空格和引號是重要的。此外,你似乎是硬編碼的網址,而不是使用網址助手。試試這樣:

$('p.p12').append(
    '<div style="background-color:#FAFAFA;">Recently Added... <br /><a href="@Url.Action("Details", "Employee", new { id = "__id__" })'.replace('__id__', data.OwnerID) + '">' + data.OwnerName + '</a>' + data.cmtDateTime + '<span><button type="button" id=' + data.Id + ' class="deleteComment">Delete</button></span><br />' + data.msg + '</div>' 
); 

或者我建議你here這恕我直言,是更正確的做法。

或者因爲你正在使用的,而不是從你的控制器動作返回JSON AJAX調用,返回一個ParialView中,你會使用正確的HTML傭工建立正確的標記。

像這樣:

[HttpPost] 
public ActionResult SomeAction(SomeViewModel args) 
{ 
    MyViewModel model = ... 
    return PartislView("_SomePartial", model); 
} 

,然後裏面你的強類型部分(_SomePartial.cshtml)建立標記沒有任何字符串連接和意大利麪條的代碼混合JavaScript和HTML:

@model MyViewModel 

<div style="background-color:#FAFAFA;"> 
    Recently Added... 
    <br /> 
    @Html.ActionLink(Model.OwnerName, "Details", "Employee", new { id = Model.OwnerID }, null) 
    @HtmlDisplayFor(x => x.cmtDateTime) 
    <span> 
     <button type="button" id="@Model.Id" class="deleteComment">Delete</button> 
    </span> 
    <br /> 
    @HtmlDisplayFor(x => x.msg) 
</div> 

現在,所有剩下的在AJAX成功回調是刷新相應的DOM部分:

success: function(html) { 
    $('p.p12').append(html); 
} 
+0

謝謝......但我想澄清雙引號......我可以使用雙引號還是我應該寫「insted」? – user1668543

+1

在我的示例中,我用單引號將字符串包裹起來。這樣你可以直接使用雙引號(請閱讀我的答案)。你當然可以仍使用雙引號來包裝串litteral在JavaScript在這種情況下,你將不得不逃避任何可能的雙引號'\「'這裏面的文字。但正如我在我的答覆明確表示這不是解決方案我會建議。我建議你讓你的控制器操作返回一個局部視圖,而不是結束這樣一個可怕的JavaScript代碼。 –

相關問題