我在单个视图上使用3个部分视图,我点击了一个提交按钮,我想将信息发送到数据库,我必须从所有部分视图中检索数据。 能否请您提供正确的信息。
Darin我使用L2S所以当我拖动我的存储过程时,我会在
中获得类似的代码 [global::System.Data.Linq.Mapping.FunctionAttribute(Name="SP_Name")]
public int SP_Name(
[global::System.Data.Linq.Mapping.ParameterAttribute(Name="EmployeeID", DbType="Int")] System.Nullable<int> EmployeeID
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), EmployeeID);
encounterID = ((System.Nullable<int>)(result.GetParameterValue(293)));
return ((int)(result.ReturnValue));
}
}
更新了
<script language="javascript" type="text/javascript">
$(function () {
$('#Form1').submit(function () {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function (data) {
var message = data.Result;
$('#Result').html(message);
}
});
return false;
});
});
</script>
在我的控制器中我使用
public ActionResult Index(FormCollection frm)
{
My Code ---------------------
return Json(new { Result = "Success" });
}
当我返回此信息时,我会在帖子中找到一个文件并要求我保存它。 我已经检查过使用flidder,在URL中它向我显示路径为/ only 如果我填写任何特定的部分视图它显示类似/控制器名称/部分视图 你能帮我解决这个问题吗?
答案 0 :(得分:2)
好吧,通常通过对此控制器操作执行HTTP请求来将数据发送到控制器操作。有不同的方法来执行HTTP请求:
<form>
标记因此,如果您使用第一种方法,您可以使用单个<form>
包装所有具有多个提交按钮(具有不同名称)的部分。然后,当您单击一个提交按钮时,所有输入字段将被发送到控制器操作,然后在控制器操作内部,您可以根据单击的提交按钮处理数据。
如果你使用第二个选项,那么只需收集你需要点击uipon按钮的值并按照AJAX请求发送它们。
更新:
根据评论部分的要求,这里可以采用第一种技术。它使用两个部分而不是三部分,但可以很容易地推断出来。
与往常一样,您首先要定义一个视图模型,该模型将代表您希望在此特定视图上使用的数据:
public class MyViewModel
{
public Partial1ViewModel Model1 { get; set; }
public Partial2ViewModel Model2 { get; set; }
}
public class Partial1ViewModel
{
public string Foo { get; set; }
}
public class Partial2ViewModel
{
public string Bar { get; set; }
}
然后是控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
Model1 = new Partial1ViewModel { Foo = "foo" },
Model2 = new Partial2ViewModel { Bar = "bar" },
};
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
// Here you have access to model.Model1.Foo and model.Model2.Bar =>
var button = "";
if (!string.IsNullOrEmpty(Request["submit1"]))
{
// submit1 button was used
button = "submit1";
}
else if (!string.IsNullOrEmpty(Request["submit2"]))
{
// submit2 button was used
button = "submit2";
}
var result = string.Format("thanks for submitting using {0}", button);
return Content(result, "text/plain");
}
}
然后是主视图(~/Views/Home/Index.cshtml
):
@model MyViewModel
@using (Html.BeginForm())
{
@Html.EditorFor(x => x.Model1)
@Html.EditorFor(x => x.Model2)
}
和两个相应的编辑器模板(如果你愿意,还可以是部分模板):
~/Views/Home/EditorTemplates/Partial1ViewModel.cshtml
:
@model Partial1ViewModel
<h2>Partial 1</h2>
<div>
@Html.LabelFor(x => x.Foo)
@Html.EditorFor(x => x.Foo)
<input type="submit" value="Submit me!" name="submit1" />
</div>
~/Views/Home/EditorTemplates/Partial2ViewModel.cshtml
:
@model Partial2ViewModel
<h2>Partial 2</h2>
<div>
@Html.LabelFor(x => x.Bar)
@Html.EditorFor(x => x.Bar)
<input type="submit" value="Submit me!" name="submit2" />
</div>