如何在mvc中获取表单集合值的类型
How to fetch type of form collection values in mvc
我有一个表单,在序列化后用 ajax 发送到控制器。我想以 controller.The 形式获取值类型为 int 或 string 具有输入类型文本和输入类型数字?我怎样才能将输入类型号的类型获取为 int ?
控制器代码如下
string abc = fm[key].GetType().Name;
这总是'String'。
假设您有一个如下所示的表单
<form method='Post' action='../Home/Index'>
<input type="text" name="First"/>
<input type="number" name="Second"/>
<input type="submit" value="send"/>
</form>
在控制器端循环键和值并将它们添加到存储过程参数中。但是 sp 也有一个参数作为类型,例如字符串,整数...
控制器如下
[HttpPost]
public ActionResult Index(FormCollection fm)
{
foreach (var key in fm.AllKeys)
{
using (SqlCommand command = new SqlCommand("SysDefinitionPopulate", con))
{
string abc = fm[key].GetType().Name;
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@key", key);
command.Parameters.Add("@value", fm[key]);
command.Parameters.Add("@type", abc);
command.ExecuteScalar();
}
}
}
FormCollection
是一个特殊的字典,键和值都是字符串。
要获得整数,您可以创建自定义模型而不是 'FormCollection' 使用此模型,例如:
public class MeaningfulName
{
public string First { get; set; }
public int Second { get; set; }
}
在你的控制器中:
[HttpPost]
public ActionResult Index(MeaningfulName model)
{
using (SqlCommand command = new SqlCommand("SysDefinitionPopulate", con))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@key", model.First);
command.Parameters.Add("@value", model.Second);
command.ExecuteScalar();
}
}
最好不要使用 FormCollection - 请改用模型绑定!
例如像这样的简单绑定:
[HttpPost]
public ActionResult Index(string First, int Second)
{
// do your magic
}
或使用实际模型class:
public class TestModel // put in Models folder
{
public string First { get; set; }
public int Second { get; set; }
}
[HttpPost]
public ActionResult Index(TestModel myData)
{
// do your magic
}
我有一个表单,在序列化后用 ajax 发送到控制器。我想以 controller.The 形式获取值类型为 int 或 string 具有输入类型文本和输入类型数字?我怎样才能将输入类型号的类型获取为 int ? 控制器代码如下
string abc = fm[key].GetType().Name;
这总是'String'。
假设您有一个如下所示的表单
<form method='Post' action='../Home/Index'>
<input type="text" name="First"/>
<input type="number" name="Second"/>
<input type="submit" value="send"/>
</form>
在控制器端循环键和值并将它们添加到存储过程参数中。但是 sp 也有一个参数作为类型,例如字符串,整数...
控制器如下
[HttpPost]
public ActionResult Index(FormCollection fm)
{
foreach (var key in fm.AllKeys)
{
using (SqlCommand command = new SqlCommand("SysDefinitionPopulate", con))
{
string abc = fm[key].GetType().Name;
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@key", key);
command.Parameters.Add("@value", fm[key]);
command.Parameters.Add("@type", abc);
command.ExecuteScalar();
}
}
}
FormCollection
是一个特殊的字典,键和值都是字符串。
要获得整数,您可以创建自定义模型而不是 'FormCollection' 使用此模型,例如:
public class MeaningfulName
{
public string First { get; set; }
public int Second { get; set; }
}
在你的控制器中:
[HttpPost]
public ActionResult Index(MeaningfulName model)
{
using (SqlCommand command = new SqlCommand("SysDefinitionPopulate", con))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@key", model.First);
command.Parameters.Add("@value", model.Second);
command.ExecuteScalar();
}
}
最好不要使用 FormCollection - 请改用模型绑定!
例如像这样的简单绑定:
[HttpPost]
public ActionResult Index(string First, int Second)
{
// do your magic
}
或使用实际模型class:
public class TestModel // put in Models folder
{
public string First { get; set; }
public int Second { get; set; }
}
[HttpPost]
public ActionResult Index(TestModel myData)
{
// do your magic
}