从 C# 中的两个不同下拉列表传递 2 个值(ASP.NET Core MVC)- 不确定
Passing 2 values from two different dropdownlists in C# (ASP.NET Core MVC) - not sure
我被困在这种情况下,问题是我需要传递 2 个值,因为我需要这些参数才能执行存储过程。看一看,我 select 一个值来自 DROPDOWNLIST #1 另一个值来自 DROPDOWNLIST #2
这是我的 HTML 代码:
<div class="row">
<div class="col-md-4">
<form asp-action="Create">
<div class="form-group">
<select name="email1" asp-items="ViewBag.Email1"></select>
</div>
<h4>Email del reemplazante:</h4>
<div class="form-group">
<select name="email2" asp-items="ViewBag.Email2"></select>
</div>
<div class="form-group">
<input type="submit" value="submit" class="btn btn-primary" />
</div>
</form>
</div>
</div>
点击提交按钮后,控制器文件上的创建 POST 方法被调用。我写了这段代码,但它看起来不太好,它没有抛出任何错误消息,但我根本没有通过 ExecuteProcedure 方法发送任何东西。
public ActionResult Create(string email1,string email2, [Bind] Person person)
{
try
{
if (ModelState.IsValid)
{
dbContext.ExecuteProcedure(person);
return RedirectToAction("Index");
}
return View(dbContext);
}
catch
{
return View();
}
}
我猜这部分代码一点也不好,但我真的不明白如何将 HTML 块中的这 2 个值传递到从控制器文件创建
人物模型:
我的个人模型:
public class Person{
public string PERSON1{get; set;}
public string PERSON2{get; set;}
}
我的 ExecuteProcedure 方法详解:
public void ExecuteProcedure(Person person)
{
using SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("SP_CreateNewEmail", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@PERSON1", person.PERSON1);
cmd.Parameters.AddWithValue("@PERSON2", person.PERSON2);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
使用一个模型代替 email1 和 email2 参数
public class Person{
public string PERSON1{get; set;}
public string PERSON2{get; set;}
public string email1{get;set;}
public string email2{get;set;}
}
在你的控制器中
public ActionResult Create(Person person)
{
try
{
if (ModelState.IsValid)
{
dbContext.ExecuteProcedure(person);
return RedirectToAction("Index");
}
return View(dbContext);
}
catch
{
return View();
}
}
这样试试,
<select asp-for="Person1" asp-items="ViewBag.Email1"></select>
<select asp-for="Person2" asp-items="ViewBag.Email2"></select>
我被困在这种情况下,问题是我需要传递 2 个值,因为我需要这些参数才能执行存储过程。看一看,我 select 一个值来自 DROPDOWNLIST #1 另一个值来自 DROPDOWNLIST #2
这是我的 HTML 代码:
<div class="row">
<div class="col-md-4">
<form asp-action="Create">
<div class="form-group">
<select name="email1" asp-items="ViewBag.Email1"></select>
</div>
<h4>Email del reemplazante:</h4>
<div class="form-group">
<select name="email2" asp-items="ViewBag.Email2"></select>
</div>
<div class="form-group">
<input type="submit" value="submit" class="btn btn-primary" />
</div>
</form>
</div>
</div>
点击提交按钮后,控制器文件上的创建 POST 方法被调用。我写了这段代码,但它看起来不太好,它没有抛出任何错误消息,但我根本没有通过 ExecuteProcedure 方法发送任何东西。
public ActionResult Create(string email1,string email2, [Bind] Person person)
{
try
{
if (ModelState.IsValid)
{
dbContext.ExecuteProcedure(person);
return RedirectToAction("Index");
}
return View(dbContext);
}
catch
{
return View();
}
}
我猜这部分代码一点也不好,但我真的不明白如何将 HTML 块中的这 2 个值传递到从控制器文件创建
人物模型: 我的个人模型:
public class Person{
public string PERSON1{get; set;}
public string PERSON2{get; set;}
}
我的 ExecuteProcedure 方法详解:
public void ExecuteProcedure(Person person)
{
using SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("SP_CreateNewEmail", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@PERSON1", person.PERSON1);
cmd.Parameters.AddWithValue("@PERSON2", person.PERSON2);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
使用一个模型代替 email1 和 email2 参数
public class Person{
public string PERSON1{get; set;}
public string PERSON2{get; set;}
public string email1{get;set;}
public string email2{get;set;}
}
在你的控制器中
public ActionResult Create(Person person)
{
try
{
if (ModelState.IsValid)
{
dbContext.ExecuteProcedure(person);
return RedirectToAction("Index");
}
return View(dbContext);
}
catch
{
return View();
}
}
这样试试,
<select asp-for="Person1" asp-items="ViewBag.Email1"></select>
<select asp-for="Person2" asp-items="ViewBag.Email2"></select>