1

Razorビューでこれを行いたい:

@foreach (Customer cust in Model.Customers)
{
    <tr data-custid="@customer.GetIdAsText()">
        @Html.RenderPartial("CustomerListTableRow", cust)
    </tr>
}

私が理解している限り、これはうまくいくはずです。foreach ブロックには <tr>...</tr> が含まれています。その中はマークアップモードになっているので、C# モードに切り替えるには @ が必要です。問題は、明らかに変数 cust がその型情報 (および値?) を失うことです。そのため、RenderPartial が期待するオブジェクトに void をキャストできないと不平を言います。

私はそれを次のように動作させました:

@foreach (Customer cust in Model.Customers)
{
    @:<tr data-custid="@customer.GetIdAsText()">
        Html.RenderPartial("CustomerListTableRow", cust);
    @:</tr>
}

しかし、醜く見えることは別として、VS にコードを美化させると、次のようにめちゃくちゃになります。

@foreach (Customer cust in Model.Customers)
{
    @:<tr data-custid="@customer.GetIdAsText()">
Html.RenderPartial("CustomerListTableRow", cust); @:</tr>                 }

いいですね。:-)

では、なぜ最初の解決策がうまくいかないのでしょうか? どのよう書けばよいですか?

4

2 に答える 2

4

Html.RenderPartial(){ }は void メソッドであるため、ブロックで囲む必要があります。

@{Html.RenderPartial("CustomerListTableRow", cust);}

あなたが間違いなく探しているのはHtml.Partial()、を返す で、次のMvcHtmlStringように使用できます。

@Html.Partial("CustomerListTableRow", cust)
于 2012-12-13T16:27:43.990 に答える
0

私はこれがうまくいくはずだと思う、

@foreach (Customer cust in Model.Customers)
{
    <tr data-custid="@customer.GetIdAsText()">
        @Html.RenderPartial("CustomerListTableRow", cust);
    </tr>
}

実行している MVC のバージョンによって異なります。

エラーの詳細を教えていただけますか?

于 2012-12-13T16:20:54.373 に答える