所以,我非常熟悉Web表单以及如何构建可重用的.ascx控件。
我想在ASP.NET MVC中解决的例子:
我的产品卖东西 我的产品为客户提供会员资格 (想想一个健康俱乐部,他们拥有使用信用卡购买的会员资格以及零售商店,他们会使用信用卡支付产品费用。)
我需要有一个控件,现有客户可以使用任何一个已保存的信用卡支付任何类型的产品或输入新卡。
Web表单 - CreditCardEntryControl.ascx - 当提交.aspx页面上的“Complete Purchase”表单时,我从子控件中获取必要的信息并执行我必须执行的操作。
Razor观点如何完成同样的事情?
所以,我会有一个包含“NameOnCard”,“CreditCardNumber”,“Cvv”,“ExpMonth”,“ExpYear”的模型。它也有一个可以为空的“SelectedStoredCreditCardId”。
然后,在父母“页面”上,我会获得有关正在购买的内容(零售商品或会员资格或其他内容)的信息......这就是表格将会发布的内容。
如何使用表单发布CreditCardEntry部分(或其他)上的“子”元素,以便我可以做我必须做的事情?
似乎不是一个新问题......我只是希望有人能指出我一个优雅的解决方案。
由于
答案 0 :(得分:2)
为此,我使用Razor编辑器模板。
创建一个包含信用卡表单所有属性的类(即CreditCardInfo
)。将此类型的属性添加到" parent"的视图模型中。页面。在父页面的视图中,您可以执行以下操作:
@Html.EditorFor(model => model.CreditCardInfo)
这将确保您的信用卡信息(子)表单中的所有字段都将使用适当的名称创建,以便在控制器中提交时绑定它们。
您可以通过部分视图获得类似的效果,但如果信用卡信息需要是父页面(更大)表单的一部分,则您难以绑定值。
答案 1 :(得分:1)
你可以利用部分视图做同样的事情。 这是一个获得you started tutorial
希望有所帮助