我有这个型号:
public class Package
{
public string CustomerName { get; set; }
public List<Product> Products { get; set; }
public int Id { get; set; }
}
public class Product
{
public int Quantity { get; set; }
public string Name { get; set; }
public int Id { get; set; }
}
我有一个创建的视图,用于创建新的包和一个或多个创建产品的 PartialView 。
如何在不离开View的情况下将产品信息提交给产品控制器?
这是我的产品的部分视图代码:
<% using (Ajax.BeginForm("Create", "Product", new AjaxOptions())) {%>
<%: Html.ValidationSummary(true) %>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%: Html.LabelFor(model => model.Name) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Name) %>
<%: Html.ValidationMessageFor(model => model.Name) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Quantity) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Quantity) %>
<%: Html.ValidationMessageFor(model => model.Quantity) %>
</div>
<%-- <p>
<input type="submit" value="Create" />
</p>--%>
</fieldset>
<% } %>
谢谢
答案 0 :(得分:0)
您可以使用AJAX解决问题。代码pode下面将3个值发送到YourAction中的YourController。
jQuery('#YourButton').click(function (event) {
var jqxhr = $.post("YourController/YourAction", {
lastName: $("#tbLastName").val(),
firstName: $("#tbFirstName").val(),
id: $("#id").val()
},
function (data) {
$('#WhereResultAppear').html(data); //can be deleted
})
.success(function () {
$('#InCaseOfSuccess').html(data); //can be deleted
})
.error(function (jqXHR, status, error) {
$('#InCaseOfError').html(data); //can be deleted
})
.complete(function () {
$('#WhenActionIsComplete').html(data); //can be deleted
});
});
答案 1 :(得分:0)
在局部视图中为您的表单添加ID。然后使用JQuery通过序列化表单来发送数据。
$.post("controller/action", $("#formId").serialize(),
function(data) {
alert("Data Loaded: " + data);
});
在控制器中
Package pakage = new Package();
UpdateModel(pakage );
答案 2 :(得分:0)
虽然您可以像其他答案一样编写代码来序列化数据,但我会考虑围绕
中的字段@using (Ajax.BeginForm("ActionOnController", new AjaxOptions{}))
{
}
这将为您完成所有操作(只要您包含必要的javascript,例如jquery.unobtrusive-ajax.min.js)
查看AjaxOptions文档。这允许您(在其他事项之外)在发布值之后更新另一部分。您可以使用它来表示成功
马丁