使用form表单进行前后台传值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用form表单进行前后台传值相关的知识,希望对你有一定的参考价值。

参考技术A

例如通过提交表单进行更新操作,原生表单的写法如下:
方法1:

对应的controller中update action的传值是:

方法2:

对应的controller中update action的传值是:

方法3:

由于form中引用了@user这个实例变量,那么其中的

等价于方法2的写法,这时候就需要透过user去取值,传到后台的params其实是hash套user的hash的格式,
对应的controller中update action的传值是:

方法4.
和方法3不同在于@user是一个实例变量,而如果用 :user 则是指向user这个model进行增删改查,因此还可以写成:

这里我们用的是 f 去遍历form_for中每个字段,因此写法和上面三种原生的form表单略有不同
由于在form_for中指定了user这个model,因此我们需要透过user去取name,age的值,传到后台的params其实是hash套user的hash的格式,
对应的controller中update action的传值是:

1.params.permit(:name)这样的写法是只有一层,那么直接可以通过params[:name]来获取name的值;而params.require(:user).permit(:name)是有两层关系,需要通过params[:user][:name]才能获取name的值

2.使用f.text_field传值和input传值方式有所不同
(1)用input获取后台的值

(2)用f.text_field获取后台的值

两者的区别在于value=后面跟的是字符串"<%=@user.user_name%>",可以用字符串拼接的方法;而value: 后面不跟字符串而是直接用@user.user_name获取栏位中的内容

如果不确定传到后台的params是什么格式,那么可以使用pry加入断点来看

soapui里 paramtype =form 类型参数怎么传值

并按照映射规则, 解析出 ControllerName,ActionName 和Parameters; 再次,到Controllers 目录下找到ControllerNameController.cs 类, 并在这个类中找到与 ActionName 同名的方法,将Parameters 作为参数传给这个方法; 最后,Action 方法开始执行,完成后将返回相应视图 以下是四种传值方式,根据不同情况下具体运用1. Request 1. Request.Form:获取以POST方式提交的数据(接收Form提交来的数据)View视图下:post方式提交数据 或 控制器下:Request.form[“”].tostring(); 2. Request.QueryString:获取地址栏参数(以及以GET方式提交的数据).aspx页面代码 $(document).ready(function () getJOSNResourceBaseList(); .js文件代码 Function getJsonResourceBaseList()Var param=param1:””,param2:””,param3:””;Param.param1=”123”;Param.param2=”456”;Param.param3=”789”; $.getJSON("/ResourceBase/getJOSNResourceBaseList", param, function (data) //具体方法操作 .controller文件中调用 然后再ResourceBaseController.cs下的getJOSNResourceBaseList方法下QueryString获取参数: Request.QueryString[“param1”]; Request.QueryString[“param2”]; Request.QueryString[“param3”]; 2.Dictionary在控制器赋值: Dictionary userModel = newDictionary();userModel.Add("UserID",“123”); userModel.Add("UserName",“456”); ViewData["UserData"] = userModel; 在视图页面取值: 接下来讲两种强类型数据的传递方法, ViewDta 和Dynamic说明:﹡ResourceBaseEditModelService.GetEditModelByID 返回类型为ResourceBaseEditModel ﹡ResourceBaseEditModel 是一个数据实体类型如:publicclassResourceBaseEditModel publicGuid Id get; set; 3. ViewData 把强类型的ViewData对象从控制器传递给视图,这里只讲强类型对象的传递 在控制器中赋值: ViewData["editModel"] = ResourceBaseEditModelService.GetEditModelByID(TempDeviceID.Value); 在视图页面取值: 4. Dynamic在控制器赋值: ResourceBaseEditModelmodel = ResourceBaseEditModelService.GetEditModelByID(TempDeviceID.Value); dynamic viewModel = newExpandoObject(); viewModel.UserID = model.Id; viewModel.UserName = model.name; return View(viewModel); 在视图页面取值: 参考技术A 你可以明确指出在那个作用域查找,比如:$Request["param"] 还有一点freemarker不能直接从一个页面跳到应一个页面这样...

以上是关于使用form表单进行前后台传值的主要内容,如果未能解决你的问题,请参考以下文章

jsp页面的form表单action提交数据但不跳转页面,后台返回的数据需要在当前页进行处理,怎么做?

URL传值和form表单提交的区别和原理

jsp页面提交form表单,后台action跳转之后自动调用页面中的js方法。并且带有参数。如何处理?

java web 的表单提交与传值

form表单中enctype="multipart/form-data"的传值问题

如何获取form表单提交后返回值