2016-02-25 79 views
1

我將輸入數據從.cshtml頁面傳遞到操作方法。輸入數據沒有通過傳遞對象返回

這是我的.cshtml網頁:

@model passingdata 

<form asp-controller="Home" method="post" asp-action="About" > 
    <button class="btn-danger" type="submit" value="Submit"></button> 
    <div class="form-group"> 
     <label> 
     <input asp-for="date" placeholder="Date" class="col-md-8" /> 
     </label> 
     <label> 
     Select from these Four Classes 
     <input type="radio" name="class" asp-for="classselect1" id="classselect1" value="classselect1" class="col-md-4" /> <p> @Model.classname1</p> 
     <input type="radio" name="class" asp-for="classselect2" id="classselect2" value="classselect2" class="col-md-4" /> <p> @Model.classname2</p> 
     <input type="radio" name="class" asp-for="classselect3" id="classselect3" value="classselect3" class="col-md-4" /> <p> @Model.classname3</p> 
     <input type="radio" name="class" asp-for="classselect4" id="classselect4" value="classselect4" class="col-md-4" /> <p> @Model.classname4</p> 
     </label> 
    </div> 
</form> 

這裏是當我點擊該按鈕時調用我的控制器代碼。

[HttpPost] 
public IActionResult About(passingdata p) 
{ 
    ViewData["Message"] = "Your application description page."; 
    Teacher.classselect1 = p.classselect1; 
    Teacher.classselect2 = p.classselect2; 
    Teacher.classselect3 = p.classselect3; 
    Teacher.classselect4 = p.classselect4; 
    Teacher.date = p.date; 
    return View(); 
} 

來自單選按鈕的輸入數據如日期和布爾值不通過包含這些變量的類的對象。 請幫我。

+1

請發佈'passingdata'類代碼。 –

回答

1

如果我沒有記錯,每個單選按鈕的Name屬性是.net MVC將如何將值映射到您的模型。

在這種情況下,你所有的名字都是「class」,這實際上意味着你有1個表單字段,其中有4個選項。

我會推薦使用html helper類,因爲它們會自動爲您創建正確的html。這篇文章的答案應該有所幫助:When using .net MVC RadioButtonFor(), how do you group so only one selection can be made?

如果你不想使用助手,只記得當你提交表單時,發佈的數據是基於每個表單字段的名稱。 .Net在後臺爲您的序列化模型做了一些魔術,但實際上您只是以「?prop1 = val1 & prop2 = val2」的格式提交數據。

更新 我想,也許我要澄清一點更好,爲什麼你在做什麼不工作,你如何期望。

當您通過表單發佈或放置數據時,它會將輸入字段(文本框,單選按鈕,複選框等)作爲查詢字符串參數傳遞,或者是身體的一部分。單選按鈕的工作方式與其他輸入類型稍有不同。對於單選按鈕,有多個輸入元素,但只有其中一個是有效的。這是通過使用name屬性來處理的。在你的情況下,所有的名字都是「class」,這意味着唯一被傳遞給服務器的是一個「?class = {val}」(val是選中的單選按鈕的值)。

如果您的passingdata模型有一個名爲「class」的屬性,它將被填充。如果你的目標是用不同的值填充所有4個classselect屬性,你需要每個單選按鈕的名稱不同。但是如果每個名稱只有一個單選按鈕,那麼每個屬性只能有1個值。您需要具有相同名稱的多個RadioButton才具有多個值(每個屬性只能選擇其中一個)。

希望能夠澄清什麼是錯誤的,並使您朝正確的方向發展。