0

我想在 mvc3 中使用不同的按钮以及 mvc3 中的 javascript 处理单个视图上的 crud 操作。

实际上我有一个帐户代码和描述字段的视图。我想通过使用 wcf 服务在 sql server 2008 r2 数据库中添加、编辑和删除记录。我想使用 javascript 进行客户端脚本。我想通过 javascript 按钮单击事件调用控制器的方法。

请告诉我我是怎么做的。

目前我有以下 javascript 功能。

$(document).ready(function () {
var today = new Date();
var dd = today.getDate();

$('#sve').click(function () {
    var person = { AcCode: $('#AcCode').val(), Descrip: $('#Descrip').val(), AddOn: dd };
    $.ajax({
        url: '/Home/Save',
        type: "POST",
        data: JSON.stringify(person),
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (result) {
            //   $('#message').html('Record saved successfully' + result).fadeIn();
            alert("Record saved successfully");
        },
        error: function () {
            //    $('#message').html('Error Occurred').fadeIn(); 
            alert("Record not saved successfully");
        }
    });
    return false;
});
});

下面是我保存按钮的控制器代码

 [Authorize]
     // [Authorize(Roles = "Administrators")] 
     [HttpPost]
     [MultiButton(MatchFormKey = "action", MatchFormValue = "Save")]
            public ActionResult Save(AccntBD model)
     {
         CBSWCF.Account useInfo = new CBSWCF.Account();
         if (ModelState.IsValid)
         {
             if (!model.IsAcCodeExist(model.AcCode))
             {
                 string ObjUser = User.Identity.Name;
                 string ObjUid = string.Empty;
                   AcntEnt.AcCode = model.AcCode;
                 AcntEnt.Descrip = model.Descrip;
                  objSvc.ACodeSave2(AcntEnt);
                              }
             else
             {
                 ModelState.AddModelError("CustomError", "Account Code Already Exist");
             }
         }
         else
         {
             ModelState.AddModelError("", "");
         }
         return View(model);
     }

我使用以下代码在单个视图中使用多个按钮。[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] 公共类 MultiButtonAttribute : ActionNameSelectorAttribute { public string MatchFormKey { get; 放; } 公共字符串 MatchFormValue { 获取;放; }

    public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo)
    {
        return controllerContext.HttpContext.Request[MatchFormKey] != null &&
            controllerContext.HttpContext.Request[MatchFormKey] == MatchFormValue;
    }
}

现在的问题是我的保存功能没有从 javascript 中命中,并且没有成功保存的消息显示给我。谁能帮助我

4

1 回答 1

0

如果您通过 JavaScript 提交表单,则无需将 MultiButton 属性添加到控制器操作,当您希望将提交按钮映射到特定控制器操作时创建 MultiButtonAttribute,这是可能的,因为当您通过提交提交表单时button 提交按钮名称属性被添加到帖子正文中,并带有其提交按钮特定值,例如

<input type="submit" name="ButtonName" value="ButtonOne"/> <!-- would post ButtonName=ButtonOne -->
<input type="submit" name="ButtonName" value="ButtonTwo"/> <!-- would post ButtonNAme=ButtonTwo -->

如果您希望通过 javascript 提交表单,该表单将根据提交按钮路由到不同的操作,您需要将按钮名称和值添加到请求的查询字符串中

url: '/Home/Save?ButtonName=ButtonOne'
于 2013-04-17T08:42:12.827 回答