Luk*_*eva 0 c# forms asp.net-mvc
我在 MVC 中使用 Html.Beginform 一段时间了,但现在遇到了一个奇怪的问题。我的表单上有 3 个提交按钮,它们应该触发 Html.Beginform 内的操作。问题是,它没有发射。我不知道这是我的观点结构还是我错过了一些东西。
这是我的观点:
<div id="maincontent" class="row select_sales"><!--CONTENT START-->
<div id="page-title" class="text-blue col-md-12"><h2>Create DocPack : @Model.DocumentPackageNumber</h2></div>
<div class="col-md-12">
<ol class="breadcrumb">
<li class="item1" style="color:#999999">Select Product</li>
<li class="item2" style="color:#49afcd">Assign Manager and Planner</li>
<li class="item3" style="color:#49afcd">Confirm DocPack</li>
</ol>
</div>
<div id="dv-body-content" class="col-md-12"><br />
@using (Html.BeginForm("CreateDocumentPackage", "home", FormMethod.Post))
{
<div id="select_product">
<form class="form-horizontal col-md-7 col-md-offset-3" role="form">
<div class="text-center">
<div class="form-group">
<label for="exampleInputEmail1">Select Product</label>
<select class="form-control" style="margin:0 auto; width:300px !important;">
<option>Standard Life</option>
</select>
</div>
<div>
<a href="~/home/index" class="btn btn-default"> Back </a>
<a href="#" class="btn btn-primary" onclick="confirm1()"> Confirm </a>
</div>
</div>
</form>
</div>
<div id="select_sales" style="display:none">
<form class="form-horizontal col-md-6 col-md-offset-3" role="form">
<div class="form-group">
<label for="exampleInputEmail1">Select Sales Manager (PRC)</label>
@Html.DropDownListFor(model => model.SalesManager,
new SelectList(
new List<Object>{
new { value = "John Doe" , text = "John Doe" },
new { value = "Cambridge Wong" , text = "Cambridge Wong" },
new { value = "Will Smith" , text = "Will Smith" },
new { value = "Bryan Adams" , text = "Bryan Adams" },
}, "value", "text", Model.SalesManager), new { @class="form-control"})
</div><br />
<div class="form-group">
<label for="exampleInputEmail1">AMG Financial Planner</label>
@Html.DropDownListFor(model => model.AmgFinancialPlanner,
new SelectList(
new List<Object>{
new { value = "Sydney White" , text = "Sydney White" },
new { value = "Bill Armstrong" , text = "Bill Armstrong" },
new { value = "Karen Michaels" , text = "Karen Michaels" }
}, "value", "text", Model.AmgFinancialPlanner), new { @class="form-control"})
</div>
<div class="text-center">
<a href="#" class="btn btn-default" onclick="back1()"> Back </a>
<a href="#" class="btn btn-primary" onclick="confirm2()"> Confirm </a>
</div>
</form>
</div>
<div id="existing_dockpack" style="display:none">
<div class="text-center">
<label>Do you have an existing Dockpack?</label>
<p>Would you like to copy it?</p>
</div>
<div class="text-center">
<a data-toggle="modal" href="#" class="btn btn-default" onclick="back2()"> Back </a>
<a data-toggle="modal" href="#existing-docpack-no" class="btn btn-default"> No </a>
<a data-toggle="modal" href="#existing-docpack-yes" class="btn btn-primary"> Yes </a>
</div>
</div>
<div class="modal fade" id="existing-docpack-yes" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><br />
<h4 class="modal-title">Input existing Docpack Number</h4><br />
@Html.TextBoxFor(model => model.PrevDocumentPackageNumber, null, new { @class="form-control", @placeholder="DocPack number"})<br /><br />
<a href="#" type="button" class="btn btn-default" data-dismiss="modal">Cancel</a>
<input type="submit" class="btn btn-primary" value="Confirm" />
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<div class="modal fade" id="existing-docpack-no" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><br />
<h4 class="modal-title">Single individual?</h4><br /><br />
<a href="#" class="btn btn-default" data-dismiss="modal">Cancel</a>
<input type="submit" class="btn btn-danger" value="No" />
<input type="submit" class="btn btn-primary" value="Yes" />
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
}
</div><!--CONTENT END-->
Run Code Online (Sandbox Code Playgroud)
别介意div。我将 Html.Beginform 放在渲染我需要的字段之前。我那里有3个提交按钮,根据按钮的不同,数据会有一些变化。但那是后来的事了,主要问题是动作没有开火。我尝试将它放在顶部,右大括号似乎丢失了。
这是我的家庭控制器。
[HttpPost]
[InPrivate]
public ActionResult CreateDocumentPackage(DocumentPackageDetailsViewModel viewModel)
{
var documentPackage = new DocumentPackage() {
DocumentPackageNumber = viewModel.DocumentPackageNumber,
UserId = WebUser.CurrentUser.Id, Title = viewModel.DocumentPackageNumber,
DocumentPackageStatus = DocumentPackageStatus.Open,
Creator = WebUser.CurrentUser.Firstname + " " + WebUser.CurrentUser.Lastname,
IsSingleIndividual = viewModel.IsSingleIndividual,
SalesManager = viewModel.SalesManager ?? "",
AmgFinancialPlanner = viewModel.AmgFinancialPlanner ?? "",
PrevDocumentPackageNumber = viewModel.PrevDocumentPackageNumber
};
_documentPackageRepository.Add(documentPackage);
_documentPackageRepository.Save();
_documentRepository.CreateDocument(1, documentPackage.Id, Convert.ToInt16(documentPackage.ClientId), WebUser.CurrentUser.Id);
_documentRepository.CreateDocument(2, documentPackage.Id, Convert.ToInt16(documentPackage.ClientId), WebUser.CurrentUser.Id);
_documentRepository.CreateDocument(3, documentPackage.Id, Convert.ToInt16(documentPackage.ClientId), WebUser.CurrentUser.Id);
_documentRepository.CreateDocument(4, documentPackage.Id, Convert.ToInt16(documentPackage.ClientId), WebUser.CurrentUser.Id);
return RedirectToAction("show", new { id = documentPackage.Id });
}
Run Code Online (Sandbox Code Playgroud)
我觉得控制器没问题 我认为问题在于视图。有任何想法吗?谢谢!
我检查了你的 html,它在 Html.BeginForm() 中包含两个表单标签
@using (Html.BeginForm("CreateDocumentPackage", "home", FormMethod.Post))
{
<div id="select_product">
<form class="form-horizontal col-md-7 col-md-offset-3" role="form">
<div id="select_sales" style="display:none">
<form class="form-horizontal col-md-6 col-md-offset-3" role="form">
Run Code Online (Sandbox Code Playgroud)
删除表单标签并仅使用 Html.BeginForm() 然后检查它对我来说是否有效。