问题标签 [editorformodel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1885 浏览

asp.net-mvc-3 - 在 HttpPost 上将嵌套模型与 MVC3 绑定

我是 MVC3 的新手。

我在表单上有一个提交按钮,我想绑定一个模型,该模型具有 2-3 个嵌套对象模型,其中包含许多属性。

有没有办法在不使用 EditorFor 的情况下绑定这些嵌套对象;这样当我提交表单时,我将在返回的模型上采用 ActionResult(Object model),嵌套对象模型及其值,而不必在 html 上实现隐藏值或表单?

0 投票
1 回答
1000 浏览

asp.net-mvc-3 - Asp.net MVC 不显示模板编辑

我有课程:

文件夹 Shared > EditorTemplates

PersonDetailsModel.cshtml

在我看来:

只显示UrlKeywordReCapcha字段!

为什么 Asp.net MVC 不使用共享文件夹中的模板来显示我的嵌套类型PersonDetailsModel

0 投票
1 回答
2118 浏览

asp.net-mvc - EditorFor 不适用于派生类型

至少,我认为这与问题有关。我的情况是这样的:

我有许多具有公共字段的业务实体,每个实体都有该实体独有的自定义字段。所以在代码中,这被建模为一个EntityBase类,并且有许多类派生自这个,例如,Derived.

为了制作可重用的 UI,我有一个名为的视图EntityBase.vbhtml,如下所示:

然后调用Derived.vbhtml执行此操作的派生类:

然后,当您导航到 时\Derived\Edit\123,它会返回默认视图Derived\Edit.vbhtml,它只是执行以下操作:

通过这种方式,控制器只返回预期的默认编辑视图,这是对视图的单行调用EntityBase,它完成它的工作并调用它Derived来呈现它不知道的派生类内容。

我认为这是不起眼的,但它不起作用。正如视图代码中所标记的那样,当我在基类视图中调用 EditorForModel 并指定派生类的名称以用作模板时,它不会呈现任何内容。我已经测试过,如果我在顶级编辑模板中调用这行完全相同的代码,它可以正常工作。所以有一些关于 MVC 不喜欢的继承,但我看不出是什么。请帮忙!

更新EditorFor:如果不是我使用Partial(并将相应的模板从 EditorTemplates 文件夹移动到 Shared 文件夹),它会像我预期的那样工作,但这不是一个很好的解决方案,因为我认为不遵循 EditorFor 模板的命名约定会令人困惑。

0 投票
2 回答
2063 浏览

asp.net-mvc-3 - 如何在包装 ViewModel 中为复杂类型使用 EditorForModel 和 DataAnnotations?

我有一个包装两种复杂类型的 ViewModel:

这个观点:

ProductData 和 FridgeContent 包含带有 DataAnnotations 的 POCO 属性,如下所示:

我想使用来自这些类的适当数据注释和 EditorForModel() 方法在 EditProductView 中编辑 ProductData 和 FridgeContent (我不想自己生成模板)。因此,我在 /Views/Shared/EditorTemplates/ 中创建了模板 ProductData.cshtml 和 FridgeContent.cshtml:

不幸的是,EditProductViewModel 的视图是空的(没有引发错误)。如果我将 EditorForModel 单独用于 FridgeContent 或 ProductData,它工作正常。我还尝试向 EditProductViewModel 添加 [UIHInt("..")] 注释,但这并没有什么不同。

我错过了什么?

0 投票
1 回答
10032 浏览

asp.net-mvc - 使用@Html.EditorForModel() 构建表单时如何自动填充特定字段?

我让用户使用 IDE 附带的 AspNetSqlProfileProvider 在我网站的某处填写他们的个人资料信息。

我允许我的用户随时编辑他们的个人资料,方法是转到编辑个人资料页面,在该页面自动填充用于编辑个人资料的表单。我目前通过使用 ViewBag 将用户配置文件的每个单独部分从我的控制器发送到视图(例如地址和城市)来做到这一点:

控制器获取:

看法:

控制器岗位:

上面的方法可以很好地编辑配置文件,从我的用户的角度来看它非常流畅(尽管从在线阅读问题/答案看来我应该使用 ViewModel,不完全确定如何进行转换 - 一直失败)。

当我的用户从网站“结账”(他们一直在购物)时,他们会看到一个屏幕,允许他们输入最终信息,以便他们进行购买。我们称之为“订单页面”。这些详细信息包括姓名、地址、信用卡信息等。其中一些信息与网站个人资料页面中的信息相同。

我希望能够自动填充此订单页面中的一些详细信息(姓名、地址),同时将某些字段留空(信用卡 - 因此用户每次访问订单页面时都必须填写这些详细信息) .

Order 页面的工作方式如MVC Store Tutorial 所述。显示订单页面时,它使用以下方式显示表单:

这很棒,允许您编辑 Order 模型中指定的详细信息,并允许进行数据验证(姓名是必需的,地址是必需的,信用卡必须是数字,电子邮件格式正确等),但我不能弄清楚如何使用我的用户个人资料中的详细信息填充此订单页面中的特定字段。

我尝试构建一个仅使用我的个人资料中包含的信息的新 ViewModel,但我并不清楚需要什么,因为我没有得到我想要的最终结果。

我曾考虑仅使用订单模型作为我的个人资料信息,但这还不够,因为我希望两者都提供不同的信息。

我曾考虑将个人资料信息用作订单模型,但我希望我的用户能够灵活地将个人资料信息与他们用于实际下订单的任何信息分开存储。

我认为解决我的问题需要特别了解的是如何在使用 "@Html.EditorForModel()" 时自动填充特定字段?

对我的整体情况有任何其他帮助都会很好,我对任何可以简化我的流程的建议都持开放态度(感觉就像我让自己变得比我需要的更难,而且我正处于协作的地步一口清新的空气)。

0 投票
2 回答
2526 浏览

asp.net-mvc-3 - 编辑器模板(单选按钮列表)和传入字典的模型项是 [enum] 类型,但字典需要模型类型 X

环顾了类似的标题,但没有任何意义或没有任何效果。我明白为什么会出现错误,我只是想弄清楚如何修复它以使用我的EditorForModel. 我收到此错误:

传入字典的模型项的类型为“MyNameSpace.ViewModels.MyData+MyEnum”,但此字典需要“MyNameSpace.ViewModels.MyData”类型的模型项。

我的模型:

[UIHint]用来调用一个名为MyRadioButton.cshtml. 现在,我的视图也在调用 EditorTemplate 使用@Html.EditorForModel. 这是调用通用模板的视图页面的一部分:

两个模板都在“/Shared/EditorTemplates/”文件夹中。

这是MyRadioButton.cshtml模板:

这是BasicDetails.cshtml@Html.EditorForModel上面调用的):

我想避免在上面的单选按钮列表编辑器模板中出现任何复杂的东西,因为那里还有其他东西(我去掉了所有多余的东西,但仍然出现错误)。我在不同的视图中多次使用特定的单选按钮列表(这就是为什么我想对其进行模板化而不是复制/粘贴)。有什么建议吗?

0 投票
2 回答
174 浏览

asp.net-mvc - 使用 @Html.EditorForModel() 而不用 mvc 程序集污染我的域实体

是否可以使用该@Html.EditorForModel()方法但不会污染我的域实体,如 Product withHiddenInputDataType(MultiLine)。需要System.Web.Mvc组装的属性?

0 投票
1 回答
7580 浏览

c# - 如何在没有视图模型的情况下使用 @Html.EditorFor()

我想做这样的事情,这样我就可以创建一个模式对话框,稍后我会用 jQuery 调用它

在这条线上

我得到错误

模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。

我不明白为什么它会关心实例在哪里或是什么(只要它的类型正确)

@Html.Partial("~/Views/Shared/EditorTemplates/ViewModel.cshtml", new ViewModel()) 可以解决问题,但我必须声明模板的完整路径……这有点糟糕。

那么有没有更好的方法呢?

0 投票
1 回答
167 浏览

asp.net-mvc - 从父级调用子级 EditorTemplates

假设我有一个简单的模型:

我有另一个模型从那延伸出来:

我有一个用于车辆的 EditorTemplate,可让您设置年份。它存储在 Views/Shared/EditorTemplates 中:

我想为调用车辆的 EditorTemplate 的汽车创建一个 EditorTemplate,但还增加了设置品牌的能力。这个想法是,如果我决定向 Vehicle 添加更多属性,我只需要更改 Vehicle 编辑器模板。我的汽车编辑器模板不必更改。

我会认为这样的事情会起作用:

...但无论出于何种原因,它都没有。我的观点很简单:

当我传入 Car 模型时,该视图最终会调用我的 Car 模板,这样就可以了。但是唯一出现的是make的编辑器。一年什么都没有。因此,这条线@Html.EditorForModel("Vehicle")似乎根本没有做任何事情。它不调用 Vehicle EditorTemplate。

有任何想法吗?这些都是 /Views/Shared/EditorTemplates 中的编辑器模板,我想知道这是否与它有关。我尝试@Html.EditorForModel("~/Views/Shared/EditorTemplates/Vehicle")了,并在其上附加了一个 .cshtml,但都没有奏效。

0 投票
2 回答
668 浏览

c# - 在没有 2 个视图的情况下更改 EditorForModel 生成的 html 布局

我渲染我的 ViewModel

创建.cshtml:

我不喜欢输出内容,因为所有 div 都在另一个之下。如果我想要一个水平布局,其中一个 div 向左浮动到另一个 div 怎么办?

当我的 Create.cshtml 视图中没有 html 时,如何使用 EditorForModel() 帮助程序修改此类布局更改?

更新:

为什么我必须创建两个视图。在我在另一个 EditorTemplate-view 中调用 @Html.EditorForModel() 的那个中,我做了所有的布局工作,我也可以通过 EditorFor( x => x....) 在第一个视图中做这些工作?这对我来说似乎很奇怪。