我正在尝试创建从其他模型列表中获取id的模型
请按照我的步骤更好地解释但在你做之前,我的目标是在我创建的模型与现有模型之间建立关系,所以也许我的方式都是错误的。
这是两个模型的关系
客户端Id< - >客户端Id
我的步骤是:
第1步:我创建了这个视图模型
public class SubscriptionViewModel
{
[Display(Name = "Client")]
public int clientId { get; set; }
[Required]
[Display(Name = "Domain")]
public string clientDomain { get; set; }
[Required]
[Display(Name = "Time")]
public int subscriptionTime { get; set; }
[Display(Name = "Document Access Key")]
public string documentAccKey { get; set; }
}
步骤2:在我的控制器中,我获取了客户端列表并将其放入viewdata
我的[GET]创建动作
public ActionResult Create()
{
ViewData["clientList"] = DbHandlers.GetClientsList();
return View();
}
第3步:从viewdata创建下拉列表
我的观点:
@model AccessibilityServiceControlPabel.Models.SubscriptionViewModel
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>SubscriptionViewModel</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.clientId, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("SelectedEmployee",new SelectList((System.Collections.IEnumerable)ViewData["clientList"], "ClientId", "ClientName"), "--Select--", new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.clientDomain, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.clientDomain, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.clientDomain, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.subscriptionTime, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.subscriptionTime, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.subscriptionTime, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.documentAccKey, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.documentAccKey, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.documentAccKey, "", 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>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
我的观点看起来很好
现在我的问题:
提交视图后,我没有获得选定的值clientId。
我的[HttpPost]创建动作(仍未完成)
public ActionResult Create(SubscriptionViewModel subscriptionviewmodel)
{
var subscription = new Subscriptions();
return RedirectToAction("Index");
}
subscriptionviewmodel数据不包含clientId数据
这是我在视图中插入的数据
正如您所看到的,cientId为0,根据我的选择,它应该是1 有人可以帮我看看我哪里出错了吗?
通过获取clientId以及我真正需要的是发送所有客户端模型,我的方式是错误的。
我提醒我的主要目标是建立他们之间的关系。
提前致谢
答案 0 :(得分:1)
将下拉列表的Name
更改为model
名称,在您的情况下,将名称从 SelectedEmployee 更改为 clientId 。
<div class="form-group">
@Html.LabelFor(model => model.clientId, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("clientId",new SelectList((System.Collections.IEnumerable)ViewData["clientList"], "ClientId", "ClientName"), "--Select--", new { @class = "form-control" })
</div>
</div>
答案 1 :(得分:1)
你没有传递该字段以返回DropDownList(fistparameter,...)。这就是为什么它不会在表单发布期间将值返回到表单。将DropDownList的第一个参数(&#34; SelectEmployee&#34;,..)更改为您的模型属性名称。
@Html.DropDownList("clientId",new SelectList((System.Collections.IEnumerable)ViewData["clientList"]....)