Hmm... od czego by tutaj zacząć.
Wiele mam pytań odnośnie tego co właściwie chcesz wysłać. No bo niby chcesz "Rent a book" ale w twoim modelu nie masz żadnej listy książek, jaka książkę User chce wypożyczyć? Albo kompletnie źle zrozumiałem Twoje zamysły albo Twoim modelem powinna być lista książek do wypożyczenia :P Tak czy inaczej, domyślam się z kodu ze próbujesz wysłać model User do controllera. Generalnie to potrzebujesz wysłać formularz. W BARDZO uproszczony sposób może to wyglądać tak:
MODEL:
public class Uzytkownik
{
public string Imie { get; set; }
public string Nazwisko { get; set; }
public string NrKarty { get; set; }
}
CONTROLLER:
[HttpGet]
public ActionResult Index()
{
return View();
}
[HttpGet]
public ActionResult RentBook()
{
return View(new Uzytkownik());
}
[HttpPost]
public ActionResult RentBook(Uzytkownik model)
{
if (!ModelState.IsValid)
return View(model);
// Twoj dalszy kod...
return RedirectToAction(nameof(Index));
}
VIEW:
@model WebApplication5.Uzytkownik
@{
ViewBag.Title = "RentBook";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>RentBook</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Uzytkownik</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Imie, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Imie, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Imie, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Nazwisko, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Nazwisko, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Nazwisko, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.NrKarty, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.NrKarty, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.NrKarty, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
VIEW PRAWIE BEZ HTML DLA ULATWIENIA:
Wszytko co znajduje się pomiędzy klamrami form zostanie wysłanie do controllera
@model WebApplication5.Uzytkownik
@{
ViewBag.Title = "RentBook";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>RentBook</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.LabelFor(model => model.Imie, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model => model.Imie, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Imie, "", new { @class = "text-danger" })
@Html.LabelFor(model => model.Nazwisko, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model => model.Nazwisko, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Nazwisko, "", new { @class = "text-danger" })
@Html.LabelFor(model => model.NrKarty, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model => model.NrKarty, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.NrKarty, "", new { @class = "text-danger" })
<input type="submit" value="Create" class="btn btn-default" />
}
Ale podkreślam raz jeszcze, ta forma dotyczy Usera, nie wiem gdzie są te książki :D
Generalnie w MVC jesli Twoja aplikacja ma miec Userow, niezaleznie od tego czy jest to Windows Authetication czy Individual User Accounts to Usera znajdziesz w Controllerze a wysłać należny Id książki jaka user chcesz wypożyczyć...
[HttpPost]
public ActionResult RentBook(Uzytkownik model)
{
if (!ModelState.IsValid)
return View(model);
// Twoj dalszy kod...
var userName = User.Identity.Name;/* <---- Twoj User*/
return RedirectToAction(nameof(Index));
}
Mam nadzieje ze choć trochę pomogłem :)
PS. Dlaczego chcesz używać ActionLink do takich rzeczy??
Pozdrawiam