1

私はasp.net MVC 2アプリケーションに取り組んでいます。私はこのようなフォームを持っています:

<% using (Html.BeginForm("UpdateRecordingDetails", "Recording", FormMethod.Post, new { id = "frmRecordingEdit" }))
   {%>
<%= Html.Hidden("AccountIDsEdit",  ViewData["AccountIDsEdit"]) %>
<%= Html.Hidden("SelId",  ViewData["SelId"]) %>
<%= Html.Hidden("EditMode", ViewData["EditMode"]) %>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tr valign="top">
        <td>
            <table align="center">
                <tr>
                    <td style="width: 32%;">
                        <%=Html.HiddenFor(model=>model.Id) %>
                        <b>Person Name</b>
                    </td>
                    <td>
                        <%: Html.TextBoxFor(model => model.PersonName, new { @class = "textarea wide" , disabled ="disabled"})%>
                    </td>
                </tr>
                <tr>
                    <td style="width: 32%;">
                        <b>Email</b>
                    </td>
                    <td>
                        <%: Html.TextBoxFor(model => model.Email, new { @class = "textarea wide" })%>
                    </td>
                </tr>
                <tr>
                    <td style="width: 32%;">
                        <b>Notes</b>
                    </td>
                    <td>
                        <%: Html.TextAreaFor(model => model.Notes, new { @class = "textarea widetextarea" })%>
                    </td>
                </tr>
                <tr>
                    <td style="width: 32%;">
                        <b>Display Notes on Playback</b>
                    </td>
                    <td>
                        <%: Html.DropDownList("isNotesVisible", ViewData["displayNotes"] as SelectList, new {@class = "normal" })%>
                    </td>
                </tr>
                <tr>
                    <td style="width: 32%;">
                        <b>Call ID Number</b>
                    </td>
                    <td>
                        <%: Html.TextBoxFor(model => model.CallIDNumber, new { @class = "textarea normal", disabled = "disabled" })%>
                    </td>
                </tr>
                <tr>
                    <td style="width: 32%;">
                        <b>Dblink Unique URL</b>
                    </td>
                    <td>
                        <span id="DBLinkUniqueURL" class="small">
                            <%= Model.DBLinkUniqueURL %>
                        </span>
                        <input id="btnCopy" type="button" value="Copy to Clipboard" onclick="copyToClipboard('DBLinkUniqueURL')" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Call Password</b>
                    </td>
                    <td>
                        <%: Html.TextBoxFor(model => model.CallPassword, new { @class = "textarea wide", disabled = "disabled" })%>
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Number Called</b>
                    </td>
                    <td>
                        <%: Html.TextBoxFor(model => model.NumberCalledFrom, new { @class = "textarea wide", disabled = "disabled" })%>
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Called From</b>
                    </td>
                    <td>
                        <%: Html.TextBoxFor(model => model.NumberCalledTo, new { @class = "textarea wide", disabled = "disabled" })%>
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Call Duration</b>
                    </td>
                    <td>
                        <%: Html.TextBoxFor(model => model.CallDuration, new { @class = "textarea normal", disabled = "disabled" })%>
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Call Rate</b>
                    </td>
                    <td>
                        <%: Html.TextBoxFor(model => model.CallRate, new { @class = "textarea normal", disabled = "disabled" })%>
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Call Cost</b>
                    </td>
                    <td>
                        <%: Html.TextBoxFor(model => model.CallCost, new { @class = "textarea tiny", disabled = "disabled" })%>
                        <%: Html.TextBoxFor(model => model.CallCost, new { @class = "textarea normal", disabled = "disabled" })%>
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>User ID/ Email</b>
                    </td>
                    <td>
                        <%: Html.TextBoxFor(model => model.LoginId, new { @class = "textarea wide", disabled = "disabled" })%>
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Date/Time Added</b>
                    </td>
                    <td>
                        <%: Html.TextBoxFor(model => model.CreationDate, new { @class = "textarea wide", disabled = "disabled" })%>
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Call Status</b>
                    </td>
                    <td>
                        <%: Html.TextBoxFor(model => model.CallStatus, new { @class = "textarea normal", disabled = "disabled" })%>
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Archived</b>
                    </td>
                    <td>
                        <%: Html.CheckBoxFor(model => model.isArchived, new { disabled = "disabled"})%>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>
<%            
   } 
%>

このフォームの外にボタンがあり、次のように jquery ajax でフォームを投稿します。

function editAccountDetails() {

    jQuery.ajax({
        url: "/recording/UpdateRecordingDetails",
        type: 'POST',
        data: $('frmRecordingEdit').serialize(),
        dataType: "json",
        contentType: "application/json",
        success: function (data) {
            alert(data);
        }
    });   
}

コントローラーのアクション メソッドで、これらのフィールドをすべて取得していません。ビューデータにあるもの、または無効になっていないものとチェックボックスの値のみを取得します。私の行動方法は次のとおりです。

 [Authorize]
        public ActionResult UpdateRecordingDetails(FormCollection form, CallRecordingModel objCampaignMode)
        {
            return Content("testing");
        }

どちらのフォームコレクションも、モデルにはフォーム内のすべてのフィールド値があることに注意してください。

[Edit]


form has values for 

AccountIDsEdit
SelId
EditMode
Id
Email
Notes
isNotesVisible
isArchived


model has values in three fields
email, Id, notes

<td>
            <table align="center">
                <tbody><tr>
                    <td style="width: 32%;">
                        <input type="hidden" value="2" name="Id" id="Id">
                        <b>Person Name</b>
                    </td>
                    <td>
                        <input type="text" value="Asif" readonly="readonly" name="PersonName" id="PersonName" disabled="disabled" class="textarea wide">
                    </td>
                </tr>
                <tr>
                    <td style="width: 32%;">
                        <b>Email</b>
                    </td>
                    <td>
                        <input type="text" value="asif@cc.com" name="Email" id="Email" class="textarea wide">
                    </td>
                </tr>
                <tr>
                    <td style="width: 32%;">
                        <b>Notes</b>
                    </td>
                    <td>
                        <textarea rows="2" name="Notes" id="Notes" cols="20" class="textarea widetextarea">asif notes</textarea>
                    </td>
                </tr>
                <tr>
                    <td style="width: 32%;">
                        <b>Display Notes on Playback</b>
                    </td>
                    <td>
                        <select name="isNotesVisible" id="isNotesVisible" class="normal"><option selected="selected">Yes</option>
<option>No</option>
</select>
                    </td>
                </tr>
                <tr>
                    <td style="width: 32%;">
                        <b>Call ID Number</b>
                    </td>
                    <td>
                        <input type="text" value="callIDNum002" name="CallIDNumber" id="CallIDNumber" disabled="disabled" class="textarea normal">
                    </td>
                </tr>
                <tr>
                    <td style="width: 32%;">
                        <b>Dblink Unique URL</b>
                    </td>
                    <td>
                        <span class="small" id="DBLinkUniqueURL">
                            http://temp.com/callIDNum002
                        </span>
                        <input type="button" onclick="copyToClipboard('DBLinkUniqueURL')" value="Copy to Clipboard" id="btnCopy">
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Call Password</b>
                    </td>
                    <td>
                        <input type="text" value="temppass" name="CallPassword" id="CallPassword" disabled="disabled" class="textarea wide">
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Number Called</b>
                    </td>
                    <td>
                        <input type="text" value="03344037289" name="NumberCalledFrom" id="NumberCalledFrom" disabled="disabled" class="textarea wide">
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Called From</b>
                    </td>
                    <td>
                        <input type="text" value="0442510406" name="NumberCalledTo" id="NumberCalledTo" disabled="disabled" class="textarea wide">
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Call Duration</b>
                    </td>
                    <td>
                        <input type="text" value="00:01:30" name="CallDuration" id="CallDuration" disabled="disabled" class="textarea normal">
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Call Rate</b>
                    </td>
                    <td>
                        <input type="text" value="4" name="CallRate" id="CallRate" disabled="disabled" class="textarea normal">
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Call Cost</b>
                    </td>
                    <td>
                        <input type="text" value="3" name="CallCost" id="CallCost" disabled="disabled" class="textarea tiny">
                        <input type="text" value="3" name="CallCost" id="CallCost" disabled="disabled" class="textarea normal">
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>User ID/ Email</b>
                    </td>
                    <td>
                        <input type="text" value="asif_hameed_371@hotmail.com" name="LoginId" id="LoginId" disabled="disabled" class="textarea wide">
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Date/Time Added</b>
                    </td>
                    <td>
                        <input type="text" value="12/19/2012 12:00:00 AM" name="CreationDate" id="CreationDate" disabled="disabled" class="textarea wide">
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Call Status</b>
                    </td>
                    <td>
                        <input type="text" value="Completed" name="CallStatus" id="CallStatus" disabled="disabled" class="textarea normal">
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Archived</b>
                    </td>
                    <td>
                        <input type="checkbox" value="true" name="isArchived" id="isArchived" disabled="disabled"><input type="hidden" value="false" name="isArchived">
                    </td>
                </tr>
            </tbody></table>
        </td>

[編集2]

Request URL:http://localhost:62843/recording/UpdateRecordingDetails
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:application/json, text/javascript, */*; q=0.01
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:0
Content-Type:application/json
Cookie:SiteBrowsedCookie=1;edited value&FirstVisit=9/14/2012 5:42:08 PM; Nop.customer=61f1bf57-034a-4427-a08c-e9442061f224; glimpseState=null; glimpseClientName=null; glimpseOptions=null; ASP.NET_SessionId=lephqzclxx35mjqier5to5l4; .CRM=85A97958C0415B3C8106A7EE2B473EE00C1F53C5E428C399AC951D7AFEA5A325C8BC54225AC959917CF1754734CF8DC6BD13DAAA7DA1EE64D4A177BB3FA3529992A1E596AF6D1D4391242C412EB809F8125EC03DBC1C5A36FDAE3BAB915E2233C30E0876EFE62B3D8CAE1CCAD020DA6791EA17FD3B085C1A913C8DBF822408FD0E2AA3B19F67AFE34C9176A3783F0935D61B847D51958ABB72AB2E9491864F956A90729E; returnUrl=returnUrl=http://localhost:62843/Account/Login
Host:localhost:62843
Origin:http://localhost:62843
Referer:http://localhost:62843/Recording/Detail
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
X-Requested-With:XMLHttpRequest
Response Headersview source
Cache-Control:private, s-maxage=0
Connection:Close
Content-Length:8
Content-Type:text/html; charset=utf-8
Date:Fri, 21 Dec 2012 07:16:02 GMT
Server:ASP.NET Development Server/10.0.0.0
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:3.0

それに対する解決策を提案してください。

4

1 に答える 1

1
data: $('frmRecordingEdit').serialize(),

次のようにする必要があります。

data: $('#frmRecordingEdit').serialize(),

id selectorsそれがjQueryでの仕組みだからです。

また、AJAXリクエストを送信している関数を呼び出す方法/場所を示していませんが、これがフォームのハンドラーまたはこのフォームの送信ボタンのハンドラーまたはアンカーのハンドラーのeditAccountDetails内部にある場合は、確認する必要がありますこのハンドラーから false を返して、デフォルト アクションをキャンセルし、AJAX 呼び出しを実行する機会を与えるようにします。デフォルトのアクションをキャンセルしないと、ブラウザーは単純にページからリダイレクトされ、AJAX 呼び出しが実行される可能性はありません。onsubmitonclickonclick

于 2012-12-21T08:22:21.573 に答える