簡體   English   中英

如何在ASP.NET MVC中使用模型數據填寫表單

[英]How to fill a form with model data in ASP.NET MVC

在嘗試使基本CRUD在我的Web應用程序中工作時,我遇到了一些問題。 我已經設法使用

Html.Beginform("bla","bla", FormMethod.Get) 

正確查詢想要的字符串數據到新視圖。

照片證據:

在此處輸入圖片說明

現在,我已經在網上搜尋了教程,並找到了以表格形式顯示查詢字符串數據的方法,但我發現沒有任何幫助。

這是我要填寫的頁面的視圖代碼以及我的ActionResults:

@using MvcApplication1.Models;
@model Klant
@{
    ViewBag.Title = "ShowKlant";
}

<h2>ShowKlant</h2>
<div id="producetop" class="row">
    @{ @*if (@Model == null)
            {
               <div>geen producten gevonden</div>
            }
            else
            {*@
    //foreach (Klant kl in Model)
    //{

    <div style="float: left">
        <fieldset id="produce">
            <form method="get">
                <div><labe>ID: </labe><input type="hidden" name="id" value="@Html.Value("","")" /></div>
                <div><label>Naam:</label> <input type="text" name="naam" value="" /></div>
                <div><label>Woonplaats:</label> <input type="text" name="woonplaats" value="" /></div>
                <div><label>Geboortedatum:</label> <input type="text" name="gebdat" value="" /></div>
                <div><label>Geslacht:</label> <input type="text" name="geslacht" value="" /></div>
                <div><label>Beschrijving:</label> <input type="text" name="beschrijving" value="" /></div>

            </form>
        </fieldset>
    </div>

        @*}*@
    }

    <div>
        @Html.ActionLink("Back to List", "Index")
    </div>
</div>

Actionresults:

public ActionResult ShowKlant()
    {
        return View();
    }

    [HttpPost]
    public ActionResult ShowKlant(int? idklant)
    {
        Klant k = new Klant();
        KlantDBController sc = new KlantDBController();
        k = sc.getById(idklant);
        return View(k);
    }

這是“推送”查詢字符串的視圖:

    @using MvcApplication1.Models;
@model List<Klant>
@{
    ViewBag.Title = "ShowAllKlanten";
}

<h2>ShowAllKlanten</h2>
@using (Html.BeginForm("ShowKlant", "Home", FormMethod.Get, new { @enctype = "multipart/form-data" }))
{
    if (@Model == null)
    {
    <div>geen producten gevonden</div>
 }
 else
 {
    <div></div><br>
     foreach (Klant kl in Model)
     {



            <tr>
                <td>
                    @Html.DisplayFor(modelItem => kl.idklant)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => kl.naam)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => kl.woonplaats)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => kl.geboortedatum)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => kl.geslacht)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => kl.beschrijving)
                </td>

                <td>
                    @Html.ActionLink("Details", "ShowKlant", new { id = kl.idklant, naam = kl.naam, woonplaats = kl.woonplaats, gebdat = kl.geboortedatum, geslacht = kl.geslacht, beschrijving = kl.beschrijving }) |
                    @Html.ActionLink("Edit", "ShowKlant", new { id = kl.idklant }) |
                    @Html.ActionLink("Delete", "ShowKlant", new { id = kl.idklant })<br /><br />
                </td>
            </tr>

我希望能朝正確的方向輕推,因為目前我完全感到困惑。

我先發制人地認為我的行動結果是完全錯誤的,但是我不確定如何去糾正它們。


更多內容:

    public class DatabaseController : Controller
{
    protected MySqlConnection conn;

    public DatabaseController()
    {
        //Vul hier de juiste gegevens in!!
        conn = new MySqlConnection("Server=localhost;Database=dating;Uid=root;Pwd=root;");
    }
}

加載我的表的SQL:

public List<Klant> getAllKlanten(String naam)
    {
        MySqlTransaction trans = null;
        List<Klant> klanten = new List<Klant>();

        conn.Open();
        trans = conn.BeginTransaction();
        try
        {
            string selectQuery = @"select * from klant;";

            MySqlCommand cmd = new MySqlCommand(selectQuery, conn);
            //MySqlParameter naamParam = new MySqlParameter("@naam", MySqlDbType.VarChar);
            //naamParam.Value = "%" + naam + "%";
            //cmd.Parameters.Add(naamParam);
            cmd.Prepare();


            MySqlDataReader dataReader = cmd.ExecuteReader();
            while (dataReader.Read())
            {
                Klant klant = new Klant();
                klant.idklant = dataReader.GetInt32("idklant");
                klant.naam = dataReader.GetString("naam");
                klant.woonplaats = dataReader.GetString("woonplaats");
                klant.geboortedatum = dataReader.GetDateTime("geboortedatum");
                klant.geslacht = dataReader.GetString("geslacht");
                klant.beschrijving = dataReader.GetString("beschrijving");


                klanten.Add(klant);
                Console.Write(klant.naam);
            }
        }

        catch (Exception e)
        {
            throw new Exception("Product niet toegevoegd: " + e);
        }

        finally
        {
            conn.Close();
        }

        return klanten;
    }

這是我的初始視圖:

在此處輸入圖片說明

這就是我要用所說的查詢字符串填充的內容:

在此處輸入圖片說明

我給您一個骯臟的答案,並指出您的問題中的一些錯誤:

(1):最初生成此頁面是為了顯示Klant 列表 您錯誤地更改了代碼以嘗試使其顯示為一個。 您應該改為生成一個詳細信息頁面。

@using MvcApplication1.Models;
@model Klant
@{
    ViewBag.Title = "ShowKlant";
}
<h2>ShowKlant</h2>
<div id="producetop" class="row">
@{ @*if (@Model == null)
    {
       <div>geen producten gevonden</div>
    }
    else
    {*@
//foreach (Klant kl in Model)
//{

_“單擊詳細信息->不應將其放在該查詢字符串中。您應該有一個顯示Klant詳細信息的details方法:

public ActionResult ShowKlant()
{
    return View();
}

[HttpPost]
public ActionResult ShowKlant(int? idklant)
{
    Klant k = new Klant();
    KlantDBController sc = new KlantDBController();
    k = sc.getById(idklant);
    return View(k);
}
//I don't know which you want to use but it has to really be like this.
//
[HttpGet] //most likely should be a GET
public ActionResult ShowKlant(int? idklant)
{//you are ONLY receiving an idklant so you don't
 //need to shove more things into a query string...
    Klant k = new Klant();
    //get the data of your "Klant" and fill it here..
    k.naam = "Bob";
    //etc       
    return View(k); 
}
//the above method will expect a ShowKlant.cshtml
// that page should be generate as a "Details" page
//and should have @model Klant on the top.

這是1/4的方式,您將需要以下內容:

<fieldset id="produce">
<form method="get">
<div><labe>ID: </labe><input type="hidden" name="id" value="@:model.naam" /></div>
<div><label>Naam:</label> <input type="text" name="naam" value="@model" /></div>

暫無
暫無

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

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