簡體   English   中英

如何將信息作為參數從視圖傳遞到控制器

[英]How do I pass information from my View to my Controller as a Parameter

我有一個表單和兩個SQL數據庫。 表單是向數據庫1提交信息,但是當用戶在第一個字段中輸入信息時,我需要它掃描數據庫2中的該數據並從中填充說明。

我目前有一個按鈕,它將在控制器中運行腳本以檢索此數據。 但是,我不知道如何將第一個字段作為參數傳遞給按鈕onclick,因此它將使用它來搜索數據庫。

一切都在控制器中正常工作,但我不知道如何獲取在EditorFor文本字段中鍵入的信息,並將其作為參數提交給按鈕。 我曾嘗試使用“模型”來執行此操作,但是我對它的工作原理了解有限。

我的觀點:

<div class="form-group">
        @Html.LabelFor(model => model.Number, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-4">
            @Html.EditorFor(model => model.Number, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.Number, "", new { @class = "text-danger" })
        </div>
        <div class="col-md-1">
            <input type="button" value="Search" class="btn btn-default" onclick="location.href='@Url.Action("Search", "Catalog", new { Number = Model.Number })'" ; />
        </div>
    </div>

我的控制器:

 public ActionResult Search(string catNo = "10004361")
        {
            IFS_Catalog_Products DatabaseScanner = new IFS_Catalog_Products();
            string catDesc = "";

            if (ModelState.IsValid)
            {
                SqlConnection con = new SqlConnection();
                con.ConnectionString = @"CONNECTION STRING";
                con.Open();

                SqlCommand cmd = new SqlCommand("SELECT DESCRIPTION FROM TABLE WHERE NUMBER = '" + catNo + "'", con);
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    catDesc = dr.GetString(0);
                    //break;
                }
                    con.Close();
            }
            DatabaseScanner.IFS_Catalog_Desc = catDesc;
            DatabaseScanner.IFS_Catalog_No = catNo;

            return View("Create", DatabaseScanner);
        }

代碼可以正確編譯,並且除了Model.Number之外,代碼的所有其他方面都可以正常工作,只有將Null傳遞給腳本。

我想從EditorFor字段中的model.Number中獲取信息,並在語句中使用它。

您需要使用@Html.ActionLink幫助器而不是button來實現目標,如下所示:

@Html.ActionLink("Search", "Search", "Catalog", new { catNo = Model.Number }, new { @class="btn btn-default" })

我將使用POST操作,如下所示:

  1. 您的看法:

     @model YOUR_MODEL @using (Html.BeginForm("Search", "Home", FormMethod.Post)) { <div class="form-group"> @Html.LabelFor(model => model.Number, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-4"> @Html.EditorFor(model => model.Number, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Number, "", new { @class = "text-danger" }) </div> <div class="col-md-1"> <input type="button" value="Search" class="btn btn-default"/> </div> 

    }

  2. 您的模型:

     public class YOUR_MODEL { public string Number {get;set;} } 
  3. 您的控制器

     [HttpPost] public ActionResult Search(YOUR_MODEL model) { IFS_Catalog_Products DatabaseScanner = new IFS_Catalog_Products(); string catDesc = ""; if (ModelState.IsValid) { SqlConnection con = new SqlConnection(); con.ConnectionString = @"CONNECTION STRING"; con.Open(); SqlCommand cmd = new SqlCommand("SELECT DESCRIPTION FROM TABLE WHERE NUMBER = '" + model.Number+ "'", con); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { catDesc = dr.GetString(0); //break; } con.Close(); } DatabaseScanner.IFS_Catalog_Desc = catDesc; DatabaseScanner.IFS_Catalog_No = catNo; return View("Create", DatabaseScanner); } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM