Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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 Mvc 3_Visual Studio 2010 - Fatal编程技术网

C# 基于自定义模型创建强类型视图

C# 基于自定义模型创建强类型视图,c#,asp.net-mvc-3,visual-studio-2010,C#,Asp.net Mvc 3,Visual Studio 2010,我需要一个结合两个实体模型的视图。我创建了一个如下所示的类: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using FSDS.DataModels; namespace FSDS.WebUX.Models { public partial class ChainandJob { public

我需要一个结合两个实体模型的视图。我创建了一个如下所示的类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FSDS.DataModels;

namespace FSDS.WebUX.Models
{
    public partial class ChainandJob
    {
        public ScheduleJobChain chain {get;set;} //this object has 6 properties
        public ScheduleJob job {get;set;} //this object has 8 properties.
    }
}
我使用创建脚手架创建了一个新的局部视图。这就是它给我的:

@model FSDS.WebUX.Models.ChainandJob

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>ChainandJob</legend>

        <p>
             <input type="submit" value="Create" />
        </p>
    </fieldset>
 }

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

所有的田地都在哪里

VS不知道你的目标。在ChainandJob之后立即尝试添加

@EditorFor(m => m.chain.ChainProperty)
@ValidationMessageFor(m => m.chain.ChainProperty)

@EditorFor(m => m.job.JobProperty)
@ValidationMessageFor(m => m.job.JobProperty)
一切都会好起来的:
EditorFor将为您生成默认输出,如果您需要调整,请随意操作。

VS不知道您的对象。在ChainandJob之后立即尝试添加

@EditorFor(m => m.chain.ChainProperty)
@ValidationMessageFor(m => m.chain.ChainProperty)

@EditorFor(m => m.job.JobProperty)
@ValidationMessageFor(m => m.job.JobProperty)
一切都会好起来的:
EditorFor将为您生成默认输出,如果您需要调整,请随意操作。

您需要自己编写,例如:

@Html.EditorFor(model => model.ChainandJob.chain.Bla)
@Html.ValidationMessageFor(model => model.ChainandJob.chain.Bla)
@Html.EditorFor(model => model.ChainandJob.job.Bla)
@Html.ValidationMessageFor(model => model.ChainandJob.job.Bla)
等等

编辑


虽然我不是这样做的,但是您可以让VS为ScheduleJobChain创建一个编辑视图,为ScheduleJob创建另一个编辑视图,并将它创建的模板剪切为一个视图模型。不要忘记@Html.HiddenFormodel=>model.chain和job.chain.Id等。

您需要自己编写,比如:

@Html.EditorFor(model => model.ChainandJob.chain.Bla)
@Html.ValidationMessageFor(model => model.ChainandJob.chain.Bla)
@Html.EditorFor(model => model.ChainandJob.job.Bla)
@Html.ValidationMessageFor(model => model.ChainandJob.job.Bla)
等等

编辑



虽然我不是这样做的,但是您可以让VS为ScheduleJobChain创建一个编辑视图,为ScheduleJob创建另一个编辑视图,并将它创建的模板剪切为一个视图模型。别忘了@Html.HiddenFormodel=>model.chain和job.chain.Id等

你不想自己输入吗?@bobek如果我必须的话,这不会是世界末日,但我担心VS应该进行验证的所有接线等等,但你可以按照答案告诉你的去做,你会得到所有验证等等。仅仅因为它不是自动生成的,并不意味着你不能直接键入它。@bobek,我想他只是感到困惑,因为VS没有像你期望的那样在一个不那么抽象的模型上自动生成视图数据。这是关于VS的q-n,而不是关于C/ASP.NET MVC,但是没关系:你不想自己输入吗?@bobek如果必须的话,这不会是世界末日,但是我担心VS应该做验证的所有线路,诸如此类,但是你可以按照答案告诉你的去做,你会得到所有的验证等等。仅仅因为它不是自动生成的,并不意味着你不能直接键入它。@bobek,我想他只是感到困惑,因为VS没有像你期望的那样在一个不那么抽象的模型上自动生成视图数据。这是关于VS的q-n,而不是关于C/ASP.NET MVC,但是没关系:OP还需要向他/她的模型中添加数据注释,以便进行验证,我相信。@四十二我认为验证可以工作,只要他对公共字符串Bla{get;set;}说[必需]。如果字符串为空,它应该抛出验证错误。啊,是的,忘了他的模型后面有模型。您是对的:OP还需要向他/她的模型中添加数据注释,以便进行验证,我相信。@四十二我认为验证可以工作,只要他对公共字符串Bla{get;set;}说[必需]。如果字符串为空,它应该抛出验证错误。啊,是的,忘了他的模型后面有模型。你是对的:我相信你需要有m=>m.chain,你必须为chain和job中的每个字段都有一个编辑器,VS不会为你搭建这个框架。你是对的,我修复了,但我认为这并不重要,这家伙问的是概念,而不是技术。你可以特别弄清楚这个小细节-一旦你把你的概念集合起来,这是基础。我相信你需要有m=>m.chain,你必须为chain和job中的每个字段都有一个编辑器,VS不会为你搭建这个框架。你是对的,我已经修复了,但我认为这并不重要,这家伙在问这个概念,而不是技术。你可以弄清楚这个小细节,尤其是-一旦你把你的概念集合起来,这就是基础。