0

私は MVC アプリケーションを開発しており、かみそりの構文を使用しています。

cshtmlファイルでJavaScriptのHTMLコードを使いたいのですが、JavaScriptの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>'
 );

または、ここで提案したように、どちらのIMHOがより正しいアプローチですか。

または、AJAX 呼び出しを使用しているため、コントローラー アクションから JSON を返す代わりに、適切な HTML ヘルパーを使用してマークアップを正しく構築する ParialView を返します。

このような:

[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 に答える