Ajax.BeginForm进不去后台方法

-一个大坑 2017-05-31 11:46:43
public ActionResult SaveData(SendCarAndDriver driver)进不去这个后台方法SendCarAndDriver 是类
public ActionResult SaveData(FormCollection driver)这个可以进入后台方法
是我的类有问题吗?
...全文
264 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
-一个大坑 2017-06-01
  • 打赏
  • 举报
回复
引用 9 楼 qq_32661557 的回复:
你post提交 那个参数肯定传不过去啊
找了下这边老员工,看了半天也没发现问题。最后还是用ajax,不过后台用Request["CARNO"]取不到值
本人QQ-554433626 2017-05-31
  • 打赏
  • 举报
回复
引用 4 楼 happy4944 的回复:
[quote=引用 2 楼 qq_32661557 的回复:] 那肯定是类的问题呗
@using (Ajax.BeginForm("SaveData", "SCCM0101",null, operationAjax, new { }))如果我把null改成一个值,后台怎么接受这个值?[/quote] 改成值相当于Get提交 string接收
-一个大坑 2017-05-31
  • 打赏
  • 举报
回复
引用 2 楼 qq_32661557 的回复:
那肯定是类的问题呗
@using (Ajax.BeginForm("SaveData", "SCCM0101",null, operationAjax, new { }))如果我把null改成一个值,后台怎么接受这个值?
-一个大坑 2017-05-31
  • 打赏
  • 举报
回复
引用 2 楼 qq_32661557 的回复:
那肯定是类的问题呗
这是类

    public class SendCarAndDriver
    {
        public string CARNO { get; set; }

        public string CARTYPE { get; set; }

        public string DRIVERNAME { get; set; }

        public Nullable<decimal> PHONENO { get; set; }

        public string COMPANY { get; set; }
    }
把Ajax.BeginForm("SaveData", "SCCM0101",null, operationAjax, new { })改成Html.BeginForm("SaveData", "SCCM0101") 就提示:System.InvalidCastException: 無法將類型 'System.Decimal' 的物件轉換為類型 'System.Array'。
本人QQ-554433626 2017-05-31
  • 打赏
  • 举报
回复
那肯定是类的问题呗
-一个大坑 2017-05-31
  • 打赏
  • 举报
回复

@model SendCar.Web.Models.SendCarAndDriver

@{
    var operationAjax = new AjaxOptions()
    {
        HttpMethod = "Post",
        OnBegin = "beginRequest",
        OnComplete = "completeRequest",
        OnSuccess = "ResponseData",
        OnFailure = "requestError"
    };
}

 @using (Ajax.BeginForm("SaveData", "SCCM0101",null, operationAjax, new { }))
        {
                    <div class="row">
                                <span class="input-group-addon">單號</span>
                                <span><input type="text" class="form-control" name="appNo" value=@ViewBag.appNo></span>
                            </div>
                    <div class="row">
                                <span class="input-group-addon">車牌號</span>
                                @Html.TextBoxFor(o => o.CARNO, new { @class = "form-control empTypeahead" })
                            </div>
                    <div class="row">
                                <span class="input-group-addon">司機姓名</span>
                                @Html.TextBoxFor(o => o.DRIVERNAME, new { @class = "form-control" })
                            </div>
                    <div class="row">
                                <span class="input-group-addon">車型</span>
                                @Html.TextBoxFor(o => o.CARTYPE, new { @class = "form-control" })
                            </div>
                    <div class="row">
                                <span class="input-group-addon">司機手機號</span>
                                @Html.TextBoxFor(o => o.PHONENO, new { @class = "form-control" })
                            </div>
                    <div class="btn btn-group" style="left:500px">
                           <button type="submit" id="btnSubmit" class="btn btn-primary">提交</button>
                          <button type="button" id="btnOppose" class="btn btn-default">取消</button>
                    </div>
        }
-一个大坑 2017-05-31
  • 打赏
  • 举报
回复
引用 9 楼 qq_32661557 的回复:
你post提交 那个参数肯定传不过去啊
额,那这个值就没意义了
-一个大坑 2017-05-31
  • 打赏
  • 举报
回复
引用 10 楼 hanjun0612 的回复:
你没有放出 savedata的具体方法。其实就很难猜测了。 现在你这么说后台接收值改为(FormCollection driver)就可以进入方法 说明,就是没找到对应的方法。因为action的参数不匹配、

       [HttpPost]
        public ActionResult SaveData(SendCarAndDriver driver)
        {
            try
            {
                decimal phone = decimal.Parse(Request["PHONENO"]);
            }
            catch
            {
                return Content("手機號必須是數字");
            }

            APP_TEMPCAR tempCar = new APP_TEMPCAR();
            IList<SendCarAndDriver> tempSendCar = ModelConvertHelper<SendCarAndDriver>.ConvertToModel(carAndDriver.GetSendCarCarNo(driver.CARNO));
            SCEntities db = new SCEntities();
            try
            {
                Expression<Func<APP_MAIN, bool>> lambdaExp = o => o.APPNO == appNo;
                APP_MAIN main = applyRepository.GetDataByLambda(lambdaExp);

                OracleParameter[] parms = new OracleParameter[] {
         new OracleParameter("S_APPNO",appNo),
         new OracleParameter("S_CARNO", driver.CARNO),
         new OracleParameter("D_APPDT", main.APPDT),
         new OracleParameter("S_STARTTIME", main.RIDE_STARTTIME),
         new OracleParameter("S_ENDTIME", main.RIDE_BACKTIME),
         new OracleParameter("S_EMPLID", userId)
        };
                DataAccessTool.DataAccessOracle.ExecuteProcedurs("DB", "PKG_SENDCAR.P_SendCarByAPPNO", parms);

                IList<APP_MAIN> sendCarDispose = ModelConvertHelper<APP_MAIN>.ConvertToModel(carAndDriver.GetSendCarDispose(appNo));
                if (sendCarDispose.Count >= 1) 
                {
                    return Content("成功");
                }
                else
                {
                    return Content("失败");
                }
                
            }
            catch (Exception ex)
            {
                return Content("保存時發生異常:" + ex.Message);
            }
        }
我不知道进不去方法还和方法内部有关就没放方法
正怒月神 版主 2017-05-31
  • 打赏
  • 举报
回复
引用 8 楼 happy4944 的回复:
控制器和2方法名是对的,后台接收值改为(FormCollection driver)就可以进入方法
你没有放出 savedata的具体方法。其实就很难猜测了。 现在你这么说后台接收值改为(FormCollection driver)就可以进入方法 说明,就是没找到对应的方法。因为action的参数不匹配、
本人QQ-554433626 2017-05-31
  • 打赏
  • 举报
回复
引用 6 楼 happy4944 的回复:
[quote=引用 5 楼 qq_32661557 的回复:] 改成值相当于Get提交 string接收
一般前台传值,和后台名字一样,这个没看到字符串名字, public ActionResult SaveData(string aaa,SendCarAndDriver driver)这样aaa是null不是前台的123[/quote] 你post提交 那个参数肯定传不过去啊
-一个大坑 2017-05-31
  • 打赏
  • 举报
回复
引用 7 楼 hanjun0612 的回复:
没有进后台方法。感觉应该是Ajax.BeginForm参数的问题 controller和action名字是否正确?
控制器和2方法名是对的,后台接收值改为(FormCollection driver)就可以进入方法
正怒月神 版主 2017-05-31
  • 打赏
  • 举报
回复
没有进后台方法。感觉应该是Ajax.BeginForm参数的问题 controller和action名字是否正确?
-一个大坑 2017-05-31
  • 打赏
  • 举报
回复
引用 5 楼 qq_32661557 的回复:
改成值相当于Get提交 string接收
一般前台传值,和后台名字一样,这个没看到字符串名字, public ActionResult SaveData(string aaa,SendCarAndDriver driver)这样aaa是null不是前台的123

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧