[英]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.