Theres verbindet bereits, wie man mehrere Modelle für eine Ansicht mit verschiedenen Wegen benutzt, aber ich versuchte diese und konnte sie nicht zur Arbeit bringen, was mache ich falsch?MVC5 Kann nicht zwei Modelle in einer Ansicht verwenden
ich einfach mal zwei Formulareingaben in 1 Aufruf, und ein Modell, sondern eine der Formulareingaben verwendet eine Liste < ‚Modell‘> und die anderen Verwendungen ‚Modell‘, hier ist was ich meine:
UPDATE : Kopieren/fügen Sie diesen Code ein, wenn Sie alle Checkbox-Elemente auswählen und senden, erhalten Sie einen Fehler bei @ Model.input.passWord und ich habe keine Ahnung, warum Checkbox-Elemente auch nicht angezeigt werden, brauchen Hilfe.
View (Index.cshtml):
@using stupidassTests.Models
@model MyViewModel
@{
ViewBag.Title = "Index";
}
<h2>Password Input</h2>
<div>
<p>Enter Password</p>
@using (Html.BeginForm("Index", "Home", FormMethod.Get))
{
@Html.TextBox("password")
<button type="submit" value="Search"></button>
}
<p>@Model.input.passWord</p> <!--passWord is underlined with red because it conflicts with the List'model'-->
</div>
<h2>Checkbox</h2>
<div>
@using (Html.BeginForm())
{
for (var i = 0; i < Model.inputCollection.Count; i++)
{
<p>
@Html.HiddenFor(n => n.inputCollection[i].Id)
@Html.DisplayFor(n => n.inputCollection[i].Name)
@Html.HiddenFor(n => n.inputCollection[i].Name)
@Html.CheckBoxFor(n => n.inputCollection[i].Checked)
</p>
}
<input id="Submit1" type="submit" value="submit" />
if (ViewBag.Values != null)
{
foreach (var item in ViewBag.Values)
{
<p>@item</p>
}
}
}
So wie Sie sehen können, kopieren/meinen Code einfügen und versuchen, sie auszuführen, ‚password‘ Formulareingabe wird durch ‚Checkbox‘ Eingang schob aus, so scheint es, die beiden ‚@model "Sind unter einer Modellklasse Konflikte, wie kann ich das beheben?
Controller (HomeController.cs):
public Action Index() {
return View();
}
[HttpGet, ActionName("Index")]
public ActionResult PasswordInput(string password)
{
FormInputs pss = new FormInputs();
pss.passWord = password;
MyViewModel mvm = new MyViewModel() { input = pss, isList = false };
return this.View("Index", mvm);
}
[HttpGet]
public ActionResult CheckBoxGet()
{
var list = new List<FormInputs>
{
new FormInputs { Id = 1, Name = "Aquafina", Checked = false },
new FormInputs { Id = 2, Name = "Mulshi Springs", Checked = false },
new FormInputs { Id = 3, Name = "Alfa Blue", Checked = false },
new FormInputs { Id = 4, Name = "Atlas Premium", Checked = false },
new FormInputs { Id = 5, Name = "Bailley", Checked = false },
new FormInputs { Id = 6, Name = "Bisleri", Checked = false },
new FormInputs { Id = 7, Name = "Himalayan", Checked = false },
new FormInputs { Id = 8, Name = "Cool Valley", Checked = false },
new FormInputs { Id = 9, Name = "Dew Drops", Checked = false },
new FormInputs { Id = 10, Name = "Dislaren", Checked = false },
};
MyViewModel mvm = new MyViewModel() { inputCollection = list, isList = true };
return this.View("Index", mvm);
}
[HttpPost]
public ActionResult CheckBoxPost(List<FormInputs> list)
{
var selected = list.Where(x => x.Checked).Select(x => x.Name);
ViewBag.Values = selected;
MyViewModel mvm = new MyViewModel() { inputCollection = list, isList = true };
return this.View("Index", mvm);
}
Model (FormInputs.cs):
public class MyViewModel
{
public FormInputs input;
public List<FormInputs> inputCollection;
public bool isList;
}
public class FormInputs
{
public string passWord = "";
public int Id { get; set; }
public string Name { get; set; }
public bool Checked { get; set; }
public List<string> checkBox = new List<string>();
}
Also nur als Zusammenfassung, weil Ich bin ein Anfänger bei MVC, wie überarbeite ich diesen Code (btw kopieren/einfügen), so dass beide Formulareingaben in einer Ansicht koexistieren können?
Erstellen Sie einfach einen Blick Modell mit 2 Eigenschaften mit - 'FormInputs Property1' und' Liste Property 2' –
Von meinem Wissen können Sie in einem einzigen mehrere Modelle haben nicht Ansicht in MVC. Sie sollten dynamische Modelle oder ViewModel-Muster verwenden, um dies zu erreichen. http://stackoverflow.com/questions/5550627/two-models-in-one-view-in-asp-mvc-3 könnte Ihnen helfen. – geo
Aber was ist der Sinn? Du kannst nur ein Formular nach dem anderen posten –