ASP.NET MVC 5 - "Create" 视图可以基于单击 "Add row" 按钮处理 IEnumerable 的任意数量的元素?
ASP.NET MVC 5 - "Create" view that can handle any number of elements for an IEnumerable based on clicking an "Add row" button?
我正在用 C#/.NET MVC 5 为我的妻子编写食谱管理器。我正在访问创建食谱的页面,但我有点困惑。食谱由名称和成分列表组成。
当我创建视图时,我有我的表单:
@using(Html.BeginForm()){
//Form elements
@Html.DisplayNameFor(x => Model.Name)
//button for adding a new ingredient to the recipe
<input type="submit" text="Submit New Recipe!" />
}
当点击添加成分的按钮时,它应该在按钮本身正上方的表单中呈现一个 html 块,这样用户就可以添加任意数量的成分,然后提交食谱当表单回发到控制器时返回。
对于这个功能,我应该让按钮调用一个发送回部分视图或其他东西的控制器吗?我不确定如何在 JavaScript 之外完成此操作,但如果可以的话,我想使用 .NET MVC 解决方案。
我尽量减少对 javascript 的依赖,但我同意 @br4d 的观点,即淘汰赛是你最好的选择。如果您想不惜一切代价避免它,它会更复杂、更慢并且不那么用户友好,但我会这样做。
将表格括在 div 中。在表格内有一个占位符 div 来保存您的配料表。将 "Add new ingredient" 调用到控制器中,该控制器将 return 具有必填字段的部分视图。在目标属性中指示占位符 div 作为更新目标,并通过指定 InsertionMode.InsertAfter.
将响应附加到占位符 div 的 html
<div id="parentDiv">
@Html.BeginForm........
@Ajax.ActionLink("Add New Ingredient","ActionName","ControllerName",routeValues,
new AjaxOptions
{
UpdateTargetId = "ChildDiv",
InsertionMode = InsertionMode.InsertAfter
}
<div id=ChildDiv>
</div>
</div>
此代码绝不是全面的或生产就绪的(我更喜欢有一种方法来处理失败的 ajax 调用,您可能想阻止交互,直到调用返回只是提到两个增强功能)。再一次,KnockOut 将是执行此操作的首选方法。
我正在用 C#/.NET MVC 5 为我的妻子编写食谱管理器。我正在访问创建食谱的页面,但我有点困惑。食谱由名称和成分列表组成。
当我创建视图时,我有我的表单:
@using(Html.BeginForm()){
//Form elements
@Html.DisplayNameFor(x => Model.Name)
//button for adding a new ingredient to the recipe
<input type="submit" text="Submit New Recipe!" />
}
当点击添加成分的按钮时,它应该在按钮本身正上方的表单中呈现一个 html 块,这样用户就可以添加任意数量的成分,然后提交食谱当表单回发到控制器时返回。
对于这个功能,我应该让按钮调用一个发送回部分视图或其他东西的控制器吗?我不确定如何在 JavaScript 之外完成此操作,但如果可以的话,我想使用 .NET MVC 解决方案。
我尽量减少对 javascript 的依赖,但我同意 @br4d 的观点,即淘汰赛是你最好的选择。如果您想不惜一切代价避免它,它会更复杂、更慢并且不那么用户友好,但我会这样做。
将表格括在 div 中。在表格内有一个占位符 div 来保存您的配料表。将 "Add new ingredient" 调用到控制器中,该控制器将 return 具有必填字段的部分视图。在目标属性中指示占位符 div 作为更新目标,并通过指定 InsertionMode.InsertAfter.
将响应附加到占位符 div 的 html<div id="parentDiv">
@Html.BeginForm........
@Ajax.ActionLink("Add New Ingredient","ActionName","ControllerName",routeValues,
new AjaxOptions
{
UpdateTargetId = "ChildDiv",
InsertionMode = InsertionMode.InsertAfter
}
<div id=ChildDiv>
</div>
</div>
此代码绝不是全面的或生产就绪的(我更喜欢有一种方法来处理失败的 ajax 调用,您可能想阻止交互,直到调用返回只是提到两个增强功能)。再一次,KnockOut 将是执行此操作的首选方法。