0

我正在开发 MVC 应用程序并使用剃刀语法。

我想在 cshtml 文件中的 JavaScript 中使用 HTML 代码,但我对如何在 razor 语法中使用双引号感到困惑。有关系吗?

这是代码行:

<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>");                    
 }
4

1 回答 1

1

我在 JScript 中写了下面的代码,对吗?

不,这似乎不对。生成的 HTML 已损坏。您需要更加注意语法,属性和引号之间的空格很重要。此外,您似乎在硬编码 url 而不是使用 url 助手。试试这样:

$('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>'
 );

或者正如我在这里向您建议的那样,恕我直言,哪种方法更正确。

或者由于您使用的是 AJAX 调用,而不是从控制器操作返回 JSON,而是返回一个 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);
}
于 2012-09-22T11:13:46.533 回答