将jquery帖子上的值覆盖到控制器上

时间:2016-07-22 20:34:42

标签: jquery asp.net asp.net-mvc

我想要完成的基本想法是:

我有一个“保存”按钮和一个“删除”按钮。如果用户编辑帐户并保存,我们假设该帐户处于活动状态,因此保留值1(“True”)。如果他/她点击“删除”按钮,则他们保存相同的数据,但帐户不再有效,因此我们应该保存0(“False”)。如果用户决定继续执行“删除”操作,如何更改帐户状态?我尝试将“IsActive”的.val()设置为.val('False'),因此可以在Convert.ToBoolean中对其进行求值并转换为0但应用程序冻结。

这是我的删除操作的jquery帖子:

 $("#RemoveAccount").click(function(e){


        $('#Display').show();
        $('#Display2').show();

        $.post("/RxCard/SaveAccount",
     {
         IsActive: $("#chkIsActive").val('False'),
         AccountId: $("#AccountID").val(),
         AccountName: $("#txtAccountName").val(),
         Address: $("#txtAddress").val(),
         City: $("#txtCity").val(),
         State: $("#txtState").val(),
         ZipCode: $("#txtZip").val(),
         Area: $("#txtArea").val(),
         Prefix: $("#txtPrefix").val(),
         Suffix: $("#txtSuffix").val()


     }).done(function (output) {
         if (output.length > 0)
             alert(output)
     }).always(function () {
         $("body").css("cursor", "default").delay(1000);
         // loadAccount(accountId);
     });     
});

这是控制器:

[ValidateRequest]
[HttpPost]
public string SaveAccount(FormCollection form)
{
    Pharmacy pharmacy = new Pharmacy();
    var isactive = Convert.ToBoolean(form["IsActive"])?1:0;
    int AccountID = Convert.ToInt32(form["AccountId"]);
    var AccountName = form["AccountName"];
    var Address = form["Address"];
    var City = form["City"];
    var State = form["State"];
    var ZipCode = form["ZipCode"];
    var PhoneNumber = "(" + form["Area"] + ") " + form["Prefix"] + "-" + form["Suffix"];


    using (OdbcConnection _conn = new OdbcConnection("FILEDSN=c:\\datasources\\RxCard.dsn"))
    using (OdbcCommand cmd1 = new OdbcCommand())
    {
        cmd1.Connection = _conn;
        cmd1.CommandText = "{call web.Maint_UpdateClinic(?,?,?,?,?,?,?,?,?)}";
        cmd1.Parameters.AddWithValue("@AccountID", AccountID);
        cmd1.Parameters.AddWithValue("@IsActive", isactive);
        cmd1.Parameters.AddWithValue("@AccountName", AccountName);
        cmd1.Parameters.AddWithValue("@Address", Address);
        cmd1.Parameters.AddWithValue("@City", City);
        cmd1.Parameters.AddWithValue("@State", State);
        cmd1.Parameters.AddWithValue("@ZipCode", ZipCode);
        cmd1.Parameters.AddWithValue("@PhoneNumber", PhoneNumber);
        cmd1.Parameters.AddWithValue("@WebID", CookieStore.GetCookie("WebId"));

        cmd1.CommandType = CommandType.StoredProcedure;
        _conn.Open();
        cmd1.ExecuteNonQuery();
        _conn.Close();
    }
    //Response.Redirect("~/rxcard/search");
    return string.Empty;
}

1 个答案:

答案 0 :(得分:1)

如果您有两个单独的“RemoveAccount”和“SaveAccount”点击处理程序,为什么不直接设置“IsActive”

$("#RemoveAccount").click(function(e){


    $('#Display').show();
    $('#Display2').show();

    $.post("/RxCard/SaveAccount",
 {
     IsActive: false, //for save account IsActive : true
     AccountId: $("#AccountID").val(),
     AccountName: $("#txtAccountName").val(),
     Address: $("#txtAddress").val(),
     City: $("#txtCity").val(),
     State: $("#txtState").val(),
     ZipCode: $("#txtZip").val(),
     Area: $("#txtArea").val(),
     Prefix: $("#txtPrefix").val(),
     Suffix: $("#txtSuffix").val()


 }).done(function (output) {
     if (output.length > 0)
         alert(output)
 }).always(function () {
     $("body").css("cursor", "default").delay(1000);
     // loadAccount(accountId);
 });     

});