19

cshtmlファイルで、条件に基づいて、空の部分ビューを返すための最良の方法は何ですか?

今私は持っています:

@if(Model.Count() > 0)
{
  loooonng partial view block of markup code
}

これをよりきれいに見せるために、どうすればやり直すことができますか?

@if(Model.Count() == 0)
{
  render an empty partial view
}

  loooonng partial view block of markup code goes here   <- This will obviously get executed only if Model.Count() > 0

前もって感謝します !

4

5 に答える 5

16

私は使用しています

return Content("");

正常に動作しています。

于 2012-05-07T17:27:05.247 に答える
15

それでも答えが必要かどうかはわかりませんが、私はこの問題に遭遇しました。これが私がビューで行ったことです。

@if(Model.Count() == 0)
{
return; // a simple return will stop execution of the rest of the View
}

コントローラレベルで、新しいクラスを作成し、アクションで返しました。

public class EmptyPartialViewResult : PartialViewResult
{
    public override void ExecuteResult(ControllerContext context)
    {
    }
}
于 2012-08-03T11:58:55.330 に答える
14

あなたが戻ってきた場合、PartialViewResult私はあなたがコントローラーで使用できることを発見しました

return default(PartialViewResult);

また

return null;

問題なく。私が考えることができる唯一の考慮事項は、あなたが使用しているかどうかです

var partialView = Html.Action("Action", "Controller");

ビューでは、nullをチェックする必要があります。Html.RenderAction問題なく受け入れているようです。

于 2016-05-23T09:33:32.680 に答える
5

EmptyResultクラスを使用します。

return new EmptyResult();
于 2015-10-04T06:27:30.797 に答える
1

ビューは、それが空であるか何かを含むべきかを決定するべきではありません。ビューは可能な限り「ダム」である必要があり、モデルからのデータを「派手な」方法で表示するだけです。出力を空にするか、表示するデータを含めるかを決定するのは、コントローラーの責任です。つまり、空のビューまたは空でないビューを返すのはコントローラーの責任です。

解決

Views / Sharedの下に空のビュー(空の* .cshtmlファイル)を作成します。

MVC_Project 
├── Views
    ├── Shared
        ├── _Empty.cshtml

コントローラーコード:

public virtual PartialViewResult SomeAction()
{
    //some condition to determine if the view should be empty
    //maybe check if some properties of the model are null?
    if(returnEmptyView) 
        return PartialView("~/Views/Shared/_Empty.cshtml");

    return PartialView("~/Views/Something/NormalView.cshtml", model);
}
于 2018-04-09T18:31:56.873 に答える