[英]can't retrieve data from post in controller in ASP.Net Mvc
I have two forms on my ASP.Net View,我的 ASP.Net 视图中有两个表单,
@using (Html.BeginForm("saveData", "Home", FormMethod.Post, new { id = "validate" }))
{
<div class="formular-container">
<div class="row">
<div class="col-md-3">
@Html.LabelFor(x => x.ccBesucherFirma)
</div>
<div class="col-md-7">
@Html.TextBoxFor(x => x.ccBesucherFirma, new { @class = "form-control firma" })
@Html.ValidationMessageFor(x => x.ccBesucherFirma)
</div>
</div>
<div class="row">
<div class="col-md-3">
@Html.LabelFor(x => x.ccBesucherName)
</div>
<div class="col-md-7">
@Html.TextBoxFor(x => x.ccBesucherName, new { @class = "form-control name" })
@Html.ValidationMessageFor(x => x.ccBesucherName)
</div>
</div>
<div class="row">
<div class="col-md-3">
@Html.LabelFor(x => x.ccBesucherDatum)
</div>
<div class="col-md-7">
@Html.TextBoxFor(x => x.ccBesucherDatum, new { @class = "form-control datum", ID = "datepicker", placeholder = "" })
@Html.ValidationMessageFor(x => x.ccBesucherDatum)
</div>
</div>
<div class="row">
<div class="col-md-3">
@Html.LabelFor(x => x.ccAnsprechpartnerTurck)
</div>
<div class="col-md-7">
@Html.TextBoxFor(x => x.ccAnsprechpartnerTurck, new { @class = "form-control contact" })
@Html.ValidationMessageFor(x => x.ccAnsprechpartnerTurck)
</div>
</div>
<button class="btn btn-default" id="entry" type="submit">Eintragen</button>
</div>
}
@using (Html.BeginForm("editData", "Home", FormMethod.Post, new { id = "validate" }))
{
<div id="overlay">
<div id="overlay-container">
<table class="overlay-table">
<tr>
<td>@Html.LabelFor(x => x.ccBesucherFirma)</td>
<td>@Html.TextBoxFor(x => x.ccBesucherFirma, new { @class = "form-control overlay-input firma", disabled = "" })</td>
</tr>
<tr>
<td>@Html.LabelFor(x => x.ccBesucherName)</td>
<td>@Html.TextBoxFor(x => x.ccBesucherName, new { @class = "form-control overlay-input name", disabled = "" })</td>
</tr>
<tr>
<td>@Html.LabelFor(x => x.ccBesucherDatum)</td>
<td>@Html.TextBoxFor(x => x.ccBesucherDatum, new { @class = "form-control overlay-input datum", id = "datepicker", disabled = "" })</td>
</tr>
<tr>
<td>@Html.LabelFor(x => x.ccAnsprechpartnerTurck)</td>
<td>@Html.TextBoxFor(x => x.ccAnsprechpartnerTurck, new { @class = "form-control overlay-input contact", disabled = "" })</td>
</tr>
</table>
<div id="EditResult"></div>
<button class="btn btn-default overlay-button" type="button" id="print">Ausweis Drucken</button>
<button class="btn btn-default overlay-button" type="button" id="edit">Bearbeiten</button>
<button class="btn btn-default close-overlay overlay-button" type="reset" value="xModel">Schließen</button>
</div>
</div>
}
One to save the data to the database and the other to edit mistakes in the data.一种是将数据保存到数据库中,另一种是编辑数据中的错误。 I read that it would possible to use two forms, without a problem so I just put another form in my view and hoped for the best.
我读到可以使用两种形式,没有问题,所以我只考虑另一种形式并希望最好。 Now my problem is, that the second form won't post any data to my controller.
现在我的问题是,第二个表单不会向我的控制器发布任何数据。 For this I tried alot of ways but none succeeded.
为此,我尝试了很多方法,但都没有成功。 Here are my tries:
这是我的尝试:
First I tried to use a form like you see above in my View.首先,我尝试在我的视图中使用您在上面看到的表单。 I need to mention something with the form, I'm editing the edit button with jquery so that it gets the attribute
type="submit"
because I don't want to delete and create the button.我需要在表单中提及一些内容,我正在使用 jquery 编辑编辑按钮,以便它获得属性
type="submit"
因为我不想删除和创建按钮。
In Javascript/Jquery with ajax:在带有 ajax 的 Javascript/Jquery 中:
var firma = $(".firma").val();
var name = $(".name").val();
var datum = $(".datum").val();
var contact = $(".contact").val();
var formData = [firma,name,datum,contact];
$.ajax({
url: "/Home/editData",
type: "POST",
dataType: "json",
data: JSON.stringify(formData),
success: function(myData) {
$("#EditResult").html(myData);
}
});
And at last my Controller, where the data should end up:最后是我的控制器,数据应该在哪里结束:
[HttpPost]
public ActionResult editData(BesucherausweisModel xFormData)
{
var a = xFormData;
return View("Index");
}
EDIT: Here's the class:编辑:这是课程:
[Required]
[Display(Name = "Firma")]
public string ccBesucherFirma { get; set; }
[Required]
[Display(Name = "Name")]
public string ccBesucherName { get; set; }
[Required]
[Display(Name = "Datum")]
public string ccBesucherDatum { get; set; }
[Required]
[Display(Name = "Ansprechpartner")]
public string ccAnsprechpartnerTurck { get; set; }
Can anybody tell what I'm doing wrong here?谁能告诉我在这里做错了什么?
EDIT: Ok, my Instructor told me to not work on this project anymore, I still thank you for your help.编辑:好的,我的导师告诉我不要再从事这个项目了,我仍然感谢你的帮助。
I believe you serialization misses properties names.我相信您的序列化错过了属性名称。 Add unique ids to your forms and try this instead:
将唯一 ID 添加到您的表单并尝试以下操作:
$.ajax({
url: "/Home/editData",
type: "POST",
dataType: "json",
data: $('#some-unique-id').serialize(),
success: function(myData) {
$("#EditResult").html(myData);
}
});
Hi you are in right direction, only need some correction in ajax call.嗨,您的方向是正确的,只需要在 ajax 调用中进行一些更正。 Find below code:
找到以下代码:
step 1) Confirm your BesucherausweisModel having public properties for below attributes:步骤 1) 确认您的 BesucherausweisModel 具有以下属性的公共属性:
class BesucherausweisModel
{
public string Firma {get; set;}
public string Name {get; set;}
public string Datum {get; set;}
public string Ansprechpartner {get; set;}
}
step 2) pass data by ajax call like below way:步骤 2) 通过 ajax 调用传递数据,如下所示:
var xFormData = {};
xFormData.Firma = $(".firma").val();
xFormData.Name = $(".name").val();
xFormData.Datum = $(".datum").val();
xFormData.Ansprechpartner = $(".contact").val();
$.ajax({
url: "/Home/editData",
type: "POST",
dataType: "json",
contentType: "application/json",
data: JSON.stringify(xFormData),
success: function(myData) {
$("#EditResult").html(myData);
}
});
Please let me know, is this works for you?请告诉我,这对你有用吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.