2016-10-22 48 views
-1

我想創建模型,其它型號MVC如何從下拉列表提交值

請按照我的步驟的名單會越來越ID將解釋的更好,但在此之前,我的目標是讓關係我爲現有的1創建的模型,所以也許我的一切都是錯誤的。

這是2款關係
客戶端ID < - >客戶端Id
enter image description here

我的步驟是:

第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(); 
    } 

enter image description here

步驟3:從可視數據創建的下拉列表

我的觀點:

@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>

它看起來罰款我看來

enter image description here

現在我的問題:
提交的觀點後,我沒有得到所選擇的值的clientId。

我的[HttpPost]創建行動(還沒有完成)

public ActionResult Create(SubscriptionViewModel subscriptionviewmodel) 
    { 
     var subscription = new Subscriptions(); 

     return RedirectToAction("Index"); 
    } 

subscriptionviewmodel數據不包含ClientID的數據

這是我在我看來已經插入數據

enter image description here

提交後,這就是我得到的
enter image description here

正如你所看到的,cientId是0,根據我的選擇它應該是1。
有人可以幫我找出我出錯的地方嗎?

難道是我的方式是錯誤的tring獲取clientId和我真正需要的是發送所有客戶端模型。
我在想,我的主要目標是讓他們之間的關係。

在此先感謝

回答

1

更改您的下拉到modelName,在你的情況從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> 
+0

作品,感謝庫馬爾 – Bglen

+0

很高興幫助! –

1

你沒有通過DropDownList(fistparameter,...)返回字段。這就是爲什麼它不會在表單發佈期間將值返回給窗體。將DropDownList的第一個參數(「SelectEmployee」,..)更改爲您的模型屬性名稱。

@Html.DropDownList("clientId",new SelectList((System.Collections.IEnumerable)ViewData["clientList"]....) 
+0

工作,謝謝Rajput – Bglen