Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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# 将单个Razor Create视图与一组具有可扩展属性的模型共享_C#_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

C# 将单个Razor Create视图与一组具有可扩展属性的模型共享

C# 将单个Razor Create视图与一组具有可扩展属性的模型共享,c#,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,在使用Razor的MVC#Web应用程序中,我总是希望重用视图代码来创建操作 想象一下这个场景: 午餐视图: 然后获取“From”变量并将其传递给 塔可控制器>塔可视图模型>塔可视图>链接回 是否有一种内置的方式来传递推荐人信息,是否有一个预定义的MVC设计模板来处理这些情况?据我所知,没有预定义的模板。但是,如果您想创建一个EditorTemplate并在razor视图中广泛使用,您可以创建一个EditorTemplate 另外,您可以在晚饭和午餐类(如gobackUrl(仅示例))中使用属性

在使用Razor的MVC#Web应用程序中,我总是希望重用视图代码来创建操作

想象一下这个场景: 午餐视图: 然后获取“From”变量并将其传递给

塔可控制器>塔可视图模型>塔可视图>链接回


是否有一种内置的方式来传递推荐人信息,是否有一个预定义的MVC设计模板来处理这些情况?据我所知,没有预定义的模板。但是,如果您想创建一个EditorTemplate并在razor视图中广泛使用,您可以创建一个EditorTemplate


另外,您可以在晚饭和午餐类(如gobackUrl(仅示例))中使用属性,而不是从路由内参数发送,并在CreateGet操作中生成gobackUrl,并将其隐藏在隐藏的表单值中。因此,子操作视图将更加通用,您不需要在父视图中使用if-else逻辑。

据我所知,没有预定义的模板。但是,如果您想创建一个EditorTemplate并在razor视图中广泛使用,您可以创建一个EditorTemplate


另外,您可以在晚饭和午餐类(如gobackUrl(仅示例))中使用属性,而不是从路由内参数发送,并在CreateGet操作中生成gobackUrl,并将其隐藏在隐藏的表单值中。因此,子操作视图将更加通用,您不需要在父视图中使用if-else逻辑。

只需真正重用所有内容即可。例如,您可以只使用一个视图执行一个操作,并使用URL确定行为。您只需要一个视图模型,这样表单就可以只使用一种类类型,然后您就可以将数据映射到它应该去的任何地方。例如:

[HttpPost]
[ValidateAntiForgeryToken]
[Route("{mealType:regex(supper|lunch)}/create")]
public ActionResult CreateMeal(string mealType, MealViewModel model)
{
    if (ModelState.IsValid)
    {
        switch (mealType)
        {
            case "supper":
                // map data to new `Supper` and save
                break;
            case "lunch":
                // map data to new `Lunch` and save
                break;
        }

        // do redirect
    }

    return View(model);
}

在不使用属性路由的情况下,还有其他方法可以处理此问题,但一般的想法是,以某种形式或方式,您可以指示要保存哪种类型的膳食,并相应地进行分支,创建和保存适当的类。

只是字面上重用所有内容。例如,您可以只使用一个视图执行一个操作,并使用URL确定行为。您只需要一个视图模型,这样表单就可以只使用一种类类型,然后您就可以将数据映射到它应该去的任何地方。例如:

[HttpPost]
[ValidateAntiForgeryToken]
[Route("{mealType:regex(supper|lunch)}/create")]
public ActionResult CreateMeal(string mealType, MealViewModel model)
{
    if (ModelState.IsValid)
    {
        switch (mealType)
        {
            case "supper":
                // map data to new `Supper` and save
                break;
            case "lunch":
                // map data to new `Lunch` and save
                break;
        }

        // do redirect
    }

    return View(model);
}
在不使用属性路由的情况下,还有其他方法可以处理此问题,但一般的想法是,以某种形式或方式指示要保存哪种类型的膳食,并相应地进行分支,创建和保存适当的类

@Url.Action("Create", "Taco", new { From = "Lunch" })
[HttpPost]
[ValidateAntiForgeryToken]
[Route("{mealType:regex(supper|lunch)}/create")]
public ActionResult CreateMeal(string mealType, MealViewModel model)
{
    if (ModelState.IsValid)
    {
        switch (mealType)
        {
            case "supper":
                // map data to new `Supper` and save
                break;
            case "lunch":
                // map data to new `Lunch` and save
                break;
        }

        // do redirect
    }

    return View(model);
}