从 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>