热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DALASP.NETMVC中的存储过程参数w/outEF-StoredProcedureParametersinDALASP.NETMVCw/outEF

EDIT:Iforgottoaddcmd.CommandTypeCommandType.StoredProcedure.IfyouforgetthislineMVCwil

EDIT: I forgot to add cmd.CommandType = CommandType.StoredProcedure. If you forget this line MVC will act like you never passed the parameters.

编辑:我忘了添加cmd.CommandType = CommandType.StoredProcedure。如果你忘记了这一行,MVC的行为就像你从未传递参数一样。

I've got a table in my database that I wish to add a record using .NET MVC

我在我的数据库中有一个表,我希望使用.NET MVC添加记录

DAL Code

public void AddCity(City city)
    {
        using (var con = new SqlConnection(cs))
        {
            using (var cmd = new SqlCommand("spInsertCity", con))
            {
                con.Open();
                //these are the three properties of the City class
                cmd.Parameters.AddWithValue("@cityId", city.CityId);
                cmd.Parameters.AddWithValue("@cityName", city.CityName);
                cmd.Parameters.AddWithValue("@countryId", city.CountryId);
                cmd.ExecuteNonQuery();
            }
        }
    }

Controller

[HttpGet]
        public ActionResult Create()
        {
            return View(new City());
        }
        [HttpPost]
        //pass City object, or form?
        public ActionResult Create(FormCollection form)
        {
            City city = new City();
            city.CityId = Convert.ToInt32(form["CityId"]);
            city.CityName = form["CityName"];
            city.CountryId = Convert.ToInt32(form["CountryId"]);
            var dataAccess = new DataAccessLayer();
            dataAccess.AddCity(city);
            return RedirectToAction("Index");
        }
        public ActionResult Index()
        {
            var dataAccess = new DataAccessLayer();
            var cityList = dataAccess.GetCities();
            return View(cityList);
        }

View

@using (Html.BeginForm("Create","City")) {
    @Html.ValidationSummary(true)

    
City
@Html.LabelFor(model => model.CityName)
@Html.EditorFor(model => model.CityName) @Html.ValidationMessageFor(model => model.CityName)
@Html.LabelFor(model => model.CountryId)
@Html.EditorFor(model => model.CountryId) @Html.ValidationMessageFor(model => model.CountryId)
@Html.LabelFor(x => x.CityId)
@Html.EditorFor(model => model.CityId); @Html.ValidationMessageFor(model => model.CityId)

With the code I get an exception telling me that @cityId parameter not provided. I'm aiming to take the posted values from the form that should constitute a City object and pass those to the DAL. I have a couple of question:

使用代码我得到一个异常,告诉我没有提供@cityId参数。我的目标是从构成City对象的表单中获取已发布的值,并将其传递给DAL。我有几个问题:

  1. Why isn't the model binder picking up the text box values as the parameters to my stored procedure?

    为什么模型绑定器不将文本框值作为存储过程的参数?

  2. In my DAL should I have the parameter as a City object, our three parameters for the three columns in the database table?

    在我的DAL中我应该将参数作为City对象,我们的三个参数是否为数据库表中的三列?

1 个解决方案

#1


0  

Change the FormCollection to a strongly typed object like City

将FormCollection更改为像City这样的强类型对象

public ActionResult Create(City city)
        {
            var dataAccess = new DataAccessLayer();
            dataAccess.AddCity(city);

            return RedirectToAction("Index");
        }

推荐阅读
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • Java学习笔记之使用反射+泛型构建通用DAO
    本文介绍了使用反射和泛型构建通用DAO的方法,通过减少代码冗余度来提高开发效率。通过示例说明了如何使用反射和泛型来实现对不同表的相同操作,从而避免重复编写相似的代码。该方法可以在Java学习中起到较大的帮助作用。 ... [详细]
  • MVC设计模式的介绍和演化过程
    本文介绍了MVC设计模式的基本概念和原理,以及在实际项目中的演化过程。通过分离视图、模型和控制器,实现了代码的解耦和重用,提高了项目的可维护性和可扩展性。详细讲解了分离视图、分离模型和分离控制器的具体步骤和规则,以及它们在项目中的应用。同时,还介绍了基础模型的封装和控制器的命名规则。该文章适合对MVC设计模式感兴趣的读者阅读和学习。 ... [详细]
author-avatar
旧梦半分_399
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有