Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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#MVC编码模式_C#_Model View Controller_Design Patterns - Fatal编程技术网

用于维护模型属性的c#MVC编码模式

用于维护模型属性的c#MVC编码模式,c#,model-view-controller,design-patterns,C#,Model View Controller,Design Patterns,是的,所以a)我不确定这是否是这个问题的合适论坛,我没有找到更好的建议,b)我无法找到一个我不敢相信我以前没有问过的问题的答案: 所以,如果我有一个模型,要填写的标准表单和它的错误,所以我把它扔回给用户,我该如何,或者应该如何,构造代码以确保所有支持属性都被构造出来 例如: public ActionResult DoThing() { var model = new DoThingModel(); model.Things = ThingService.FetchThings(

是的,所以a)我不确定这是否是这个问题的合适论坛,我没有找到更好的建议,b)我无法找到一个我不敢相信我以前没有问过的问题的答案:

所以,如果我有一个模型,要填写的标准表单和它的错误,所以我把它扔回给用户,我该如何,或者应该如何,构造代码以确保所有支持属性都被构造出来

例如:

public ActionResult DoThing()
{
    var model = new DoThingModel();
    model.Things = ThingService.FetchThings();
    //Do Other Things
    return View(model);
}
公平的标准得到行动

[HttpPost]
public ActionResult DoThing(DoThingModel model)
{
    var valid = ThingService.ValidateThing(model);
    if(!valid)
    {
        model.ValidationMessage = "Ohh no validation failed";
        model.valid = false;
        return View(model); //I have't rebuilt model.Things with ThingService.FetchThings()
    }
    else
    {
        return RedirectToAction("Success");
    }
}
因此,如果事情是有效的,则重定向到success页面,否则将表单(包含在模型中)返回给用户并显示验证消息。问题是我的表单页面上有东西,我还没有用它填充模型

现在,这是一个非常简单的示例,我可以将表单中的内容传回,或者复制填充它的代码行。但是想象一下,我有一个更复杂的模型,有面包屑,多个需要填充的属性。代码复制=错误,那么在传回模型之前,我应该如何确保模型拥有我需要的一切?我曾想过创建一个服务,但它是一个只有一个功能的服务。我曾考虑过使用构造函数,但这对模型绑定不起作用。我曾想过创建一个DoThingModel.Init()来完成所有的工作,但将这样的代码放在模型类中似乎有点脏。我在控制器中使用了一个私有函数,它填充了所有必需的属性,但这似乎又脏了

我觉得应该有一个标准的代码模式,即=>创建新模型=>确保模型具有支持页面的所有内容=>返回模型=>验证模型=>重新应用任何属性=>返回模型=>重复直到有效


正如我在介绍中所说,这肯定是某个地方的标准问题,但我找不到它。

你不会找到这个问题的“标准”答案。。。这完全取决于您的模型和应用程序。就你提出的选择而言,它们似乎是合理的。我不知道为什么你不想使用服务,因为“它只做一件事”——这是fineService,一件事看起来很好,除了在我之后看这个的人必须打开另一个类来看看发生了什么,这似乎是一个不必要的复杂问题。但我要说,这似乎是最干净的方法。