簡體   English   中英

無法從 ASP.Net Mvc 控制器中的帖子中檢索數據

[英]can't retrieve data from post in controller in ASP.Net Mvc

我的 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>
    }

一種是將數據保存到數據庫中,另一種是編輯數據中的錯誤。 我讀到可以使用兩種形式,沒有問題,所以我只考慮另一種形式並希望最好。 現在我的問題是,第二個表單不會向我的控制器發布任何數據。 為此,我嘗試了很多方法,但都沒有成功。 這是我的嘗試:

首先,我嘗試在我的視圖中使用您在上面看到的表單。 我需要在表單中提及一些內容,我正在使用 jquery 編輯編輯按鈕,以便它獲得屬性type="submit"因為我不想刪除和創建按鈕。

在帶有 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);
            }
        });

最后是我的控制器,數據應該在哪里結束:

[HttpPost]
public ActionResult editData(BesucherausweisModel xFormData)
{

    var a = xFormData;

    return View("Index");
}

編輯:這是課程:

[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; }

誰能告訴我在這里做錯了什么?

編輯:好的,我的導師告訴我不要再從事這個項目了,我仍然感謝你的幫助。

我相信您的序列化錯過了屬性名稱。 將唯一 ID 添加到您的表單並嘗試以下操作:

$.ajax({
        url: "/Home/editData",
        type: "POST",
        dataType: "json",
        data: $('#some-unique-id').serialize(),
        success: function(myData) {
            $("#EditResult").html(myData);
        }
    });

嗨,您的方向是正確的,只需要在 ajax 調用中進行一些更正。 找到以下代碼:

步驟 1) 確認您的 BesucherausweisModel 具有以下屬性的公共屬性:

class BesucherausweisModel
{
    public string Firma {get; set;}
    public string Name {get; set;}
    public string Datum {get; set;}
    public string Ansprechpartner {get; set;}
}

步驟 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);
    }
});

請告訴我,這對你有用嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM