在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
提前致谢!
答案 0 :(得分:15)
不确定你是否还需要答案,但我遇到了这个问题,这就是我在视图中所做的:
@if(Model.Count() == 0)
{
return; // a simple return will stop execution of the rest of the View
}
在Controller级别,我创建了一个新类并在我的操作中返回它:
public class EmptyPartialViewResult : PartialViewResult
{
public override void ExecuteResult(ControllerContext context)
{
}
}
答案 1 :(得分:14)
我一直在使用
return Content("");
并且工作正常。
答案 2 :(得分:10)
如果您返回PartialViewResult
我发现在控制器中您可以使用
return default(PartialViewResult);
或
return null;
没有任何问题。我能想到的唯一考虑因素是你是否正在使用
var partialView = Html.Action("Action", "Controller");
在您的视图中,您需要检查null。 Html.RenderAction
似乎接受它没问题。
答案 3 :(得分:3)
使用EmptyResult类:
return new EmptyResult();
答案 4 :(得分:0)
视图不应该决定它是否应为空或包含某些内容。一个观点应该是&#34;哑的&#34;尽可能简单地在模型中显示模型中的数据&#34; fancy&#34;办法。由控制器决定输出应该为空还是包含要显示的数据。换句话说,由控制器返回空视图或非空视图。
在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);
}