Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
Asp.net mvc 4 “如何构建可重用的ASP.NET MVC”;控制措施;_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 4 “如何构建可重用的ASP.NET MVC”;控制措施;

Asp.net mvc 4 “如何构建可重用的ASP.NET MVC”;控制措施;,asp.net-mvc-4,Asp.net Mvc 4,因此,我非常熟悉web表单以及如何构建可重用的.ascx控件 我想在ASP.NET MVC中解决的人为示例: 我的产品卖东西 我的产品为客户提供会员资格 (想想一家健身俱乐部,他们的会员资格是用信用卡购买的,还有一家零售店,他们用信用卡支付产品费用) 我需要有一个控制,现有的客户可以支付任何一种类型的产品与任何一个保存的信用卡列表或输入一个新的卡 Web表单-CreditCardEntryControl.ascx-当提交.aspx页面上的“完整购买”表单时,我从子控件获取必要的信息并执行我必须执

因此,我非常熟悉web表单以及如何构建可重用的.ascx控件

我想在ASP.NET MVC中解决的人为示例:

我的产品卖东西 我的产品为客户提供会员资格 (想想一家健身俱乐部,他们的会员资格是用信用卡购买的,还有一家零售店,他们用信用卡支付产品费用)

我需要有一个控制,现有的客户可以支付任何一种类型的产品与任何一个保存的信用卡列表或输入一个新的卡

Web表单-CreditCardEntryControl.ascx-当提交.aspx页面上的“完整购买”表单时,我从子控件获取必要的信息并执行我必须执行的操作

用Razor视图是如何完成这类事情的

所以,我会有一个包含“NameOnCard”、“CreditCardNumber”、“Cvv”、“ExpMonth”、“ExpYear”的模型。它还有一个可空的“SelectedStoredCreditCardId”

然后,在家长的“页面”上,我会有关于所购买物品的信息(零售物品或会员资格或其他任何东西)…这是表格的存放位置,可以发布

如何将CreditCardEntry部分(或任何内容)上的“子”元素与表单一起发布,以便我可以执行我必须执行的操作

这似乎不是一个新问题……我只是希望有人能给我一个优雅的解决方案


谢谢

利用局部视图,您也可以做同样的事情。 这里有一个


希望对您有所帮助

您可以利用局部视图做同样的事情。 这里有一个


希望对您有所帮助

您可以利用局部视图做同样的事情。 这里有一个


希望对您有所帮助

您可以利用局部视图做同样的事情。 这里有一个


希望对您有所帮助

为此,我将使用Razor编辑器模板

创建一个包含信用卡表单所有属性的类(即,
CreditCardInfo
)。将此类型的属性添加到“父”页面的viewmodels中。在父页面视图中,您可以执行以下操作:

@Html.EditorFor(model => model.CreditCardInfo)
这将确保您的信用卡信息(sub)表单中的所有字段都将使用专有名称创建,以便在控制器中提交时绑定这些字段


使用局部视图可以实现类似的效果,但如果信用卡信息需要成为父页面(较大)表单的一部分,则很难绑定值。

为此,我将使用Razor编辑器模板

创建一个包含信用卡表单所有属性的类(即,
CreditCardInfo
)。将此类型的属性添加到“父”页面的viewmodels中。在父页面视图中,您可以执行以下操作:

@Html.EditorFor(model => model.CreditCardInfo)
这将确保您的信用卡信息(sub)表单中的所有字段都将使用专有名称创建,以便在控制器中提交时绑定这些字段


使用局部视图可以实现类似的效果,但如果信用卡信息需要成为父页面(较大)表单的一部分,则很难绑定值。

为此,我将使用Razor编辑器模板

创建一个包含信用卡表单所有属性的类(即,
CreditCardInfo
)。将此类型的属性添加到“父”页面的viewmodels中。在父页面视图中,您可以执行以下操作:

@Html.EditorFor(model => model.CreditCardInfo)
这将确保您的信用卡信息(sub)表单中的所有字段都将使用专有名称创建,以便在控制器中提交时绑定这些字段


使用局部视图可以实现类似的效果,但如果信用卡信息需要成为父页面(较大)表单的一部分,则很难绑定值。

为此,我将使用Razor编辑器模板

创建一个包含信用卡表单所有属性的类(即,
CreditCardInfo
)。将此类型的属性添加到“父”页面的viewmodels中。在父页面视图中,您可以执行以下操作:

@Html.EditorFor(model => model.CreditCardInfo)
这将确保您的信用卡信息(sub)表单中的所有字段都将使用专有名称创建,以便在控制器中提交时绑定这些字段


使用局部视图可以实现类似的效果,但如果信用卡信息需要成为(较大)视图的一部分,则很难绑定这些值查看使用
PartialViews
查看使用
PartialViews
查看使用
PartialViews
查看使用
PartialViews
查看使用
PartialViews
这听起来更接近我想要做的事情。但是,如果我想做“定制”的事情,比如用值预加载到期月份和到期年份(所有12个月和去年,今年和8年以上的预期年份),该怎么办。或者,如果我的“自定义控件”有一个文本框,我想为其执行日期选择器之类的操作,该怎么办?您可以在编辑器模板中执行所有这些操作。将编辑器模板视为另一个视图,它的模型具有<代码> CurrimCubField类型。所以,在视图中可以做的任何事情,都可以在这里做。不同之处在于Razor视图引擎将使用编辑器模板渲染
CreditCardInfo
的任何值,并将该渲染嵌入主视图。“编辑器模板”?如何为CreditCardInfo模型类指定“视图”?这都是按照约定完成的。Razor渲染引擎将在一些默认文件夹中查找与您的类型同名的“视图/编辑器模板”。因此,如果您将编辑器模板命名为
CreditCardInfo.cshtml
,并将其放置在
视图/共享/编辑器模板中,则在主视图中放置类似内容时,应使用它来呈现该类型的值:
@Html.EditorFor(model=>model.CrediCardInfo)
。如果您坚持使用不同的代码组织,还有其他方法可以指定模板名称。这听起来更接近我想要做的。然而