Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处理控制器/视图模型中的空数据_C#_Asp.net_Asp.net Mvc 3_Viewmodel - Fatal编程技术网

C# 如何处理控制器/视图模型中的空数据

C# 如何处理控制器/视图模型中的空数据,c#,asp.net,asp.net-mvc-3,viewmodel,C#,Asp.net,Asp.net Mvc 3,Viewmodel,当将数据从服务返回到控制器的操作中时,处理空数据的最佳方法是什么。在下面的示例中,我在服务中查询一个页面。但是如果该Id的页面不存在,我应该如何处理 public ActionResult Edit(int id) { var page = Services.PageService.GetPage(id); if(page == null) { // Do something about it so that the view model doesn't

当将数据从服务返回到控制器的操作中时,处理空数据的最佳方法是什么。在下面的示例中,我在服务中查询一个页面。但是如果该Id的页面不存在,我应该如何处理

public ActionResult Edit(int id)
{
    var page = Services.PageService.GetPage(id);

    if(page == null)
    {
        // Do something about it so that the view model doesn't throw an
        //exception when it gets passed a null Page object
    }

    return View(page);
}
我是否应该创建一个更复杂的ViewModel,该ViewModel具有一个名为find的布尔属性,以便执行以下操作:

public ActionResult Edit(int id)
{
    var page = Services.PageService.GetPage(id);
    var viewModel = new PageEditViewModel()
                        {
                            Found = (page != null),
                            Page = page
                        };

    return View(viewModel);
}
然后在视图模型中

@model Payntbrush.Presentation.Demo.MVC3.Areas.Admin.Models.PageIndexViewModel

@{
    ViewBag.Title = "Index";
}

<h2>Pages</h2>

<table>
<tr>
    <td><strong>Title</strong></td>

</tr>

@if (@Model.Found)
{
@foreach (var page in @Model.Pages)
 {
     <tr>
         <td>@page.Title</td>
         <td>@Html.ActionLink("Edit", "Edit", "Page", new {id = @page.Id})</td>
     </tr>
 }
}
else
{
    <strong>CANNOT FIND PAGE</strong>
}
</table>
在这种情况下,其他人会怎么做?上述情况很好,但是否有更聪明或更受好评的方法来做到这一点


干杯

我想到了两种可能性:

显示404页面:

public ActionResult Edit(int id)
{
    var page = Services.PageService.GetPage(id);

    if(page == null)
    {
        return HttpNotFound();
    }

    return View(page);
}
如果要在同一视图中显示错误,可以在视图模型中包含一个属性,指示未找到该项,并在相应视图中针对该属性进行测试


因此,基本上,这将取决于您希望在这种情况下如何向用户显示错误。

如果页面为空,则返回内容。比如:

public ActionResult Edit(int id)
{
    var page = Services.PageService.GetPage(id);

    if(page == null)
    {
        return Content("CANNOT FIND PAGE");
    }

    return View(page);
}

在我看来,这完全取决于发生错误时你想做什么。如果在这种情况下显示找不到页面是您想要做的,那么我认为您的方法没有任何错误。除此之外,我个人会传递null,并在视图中检查null。