0

ビューから ActionResult [Post] にアクセスする際に問題が発生しています。

意見:

@using (Html.BeginForm()){
<form id="edit-order-form" action="@Href("~/Orders/Edit")">///EDIT:
   ....

  <div class="row">
            <span class="label"><label for="ShipPostalCode">PostalCode:</label></span>
            <input type="text" id="txtShipPostalCode" name="ShipPostalCode" value="@ViewBag.ShipPostalCode" />
        </div>
        <div class="row">
            <span class="label">&nbsp;</span>
            <input type="submit" id="btnSave" name="submit" value="Save" />
        </div>
        </fieldset>
    </form>

<script type="text/javascript">

$("#btnSave").live("click", saveRecord);

function saveRecord() {

$.ajax(
 { type: "Post" ,
     url: '@Url.Action("Save", "OrdersList")',
     data: {
    OrderID: $("#hdnOrderID").val(),
    ShipName: $("#txtShipName").val(),
    ShipAddress: $("#ShipAddress").val(),
    RequiredDate: $("#RequiredDate").val(),
    ShipPostalCode: $("#ShipPostalCode").val(),
         },
         dataType: "html" ,
         success: function  (data){
             alert ('saved');
              }
     }).....

コントローラ:

        [HttpPost]
    //[ValidateAntiForgeryToken]
    public ActionResult Save(int orderId = 0, string ShipName = "", string ShipAddress = "", string ShipPostalCode = "", DateTime? RequiredDate = null)
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString);

        using (SqlCommand cmd = new SqlCommand("GetOrders", conn))
        {
            conn.Open();
            //SqlCommand cmd = new SqlCommand( "GetOrders", "connection string");

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@ID", orderId);
            cmd.Parameters.AddWithValue("@ShipName", ShipName);
            cmd.Parameters.AddWithValue("@ShipAddress", ShipAddress);
            SqlParameter paramDate = cmd.Parameters.Add("@RequiredDate",
            System.Data.SqlDbType.DateTime);
            paramDate.Value = RequiredDate;
            //cmd.Parameters.AddWithValue("@RequiredDate", RequiredDate);
            cmd.Parameters.AddWithValue("@ShipPostalCode", ShipPostalCode);

            //SqlParameter Total = cmd.Parameters.Add("@Total", SqlDbType.Int);
            //Total.Direction = ParameterDirection.Output;
            cmd.ExecuteNonQuery();



            conn.Close();


            return View();
        }
    }

コントローラー アクションは呼び出されません。おそらくjavascript機能もありません。

4

2 に答える 2

0

document.forms[0].submit();代わりに使ってみましたか?投稿または JavaScript に問題があるかどうかを確認するには?

また、.live は非推奨です。代わりに .on を使用する必要があります。

コード例:

$("#btnSave").on("click", saveRecord);

//or $("#btnSave").click( function(){
//    document.forms[0].submit();
//});

function saveRecord() {
    document.forms[0].submit();
 })

そして、保存アクションの結果の属性を[HttpPost]それ以下に変更します[ActionName("Edit")]

于 2013-09-11T12:05:01.433 に答える