2017-02-24 39 views
-2

填充這是我的實體類:Model屬性不是從形式

class Locker 
{ 
    public string FrontColor { get; set; } 
} 

查看:

@using (Html.BeginForm("ConfigureFurniture", "Home", FormMethod.Post)) 
{ 

<input type="color" name="FrontColor" id="color1"/> 


<input type="submit" class="btn btn-success" value="Zamów" /> 

} 

在POST操作將不會填充到我的模型的屬性。

public ActionResult ConfigureFurniture() 
{ 
    var furnitureViewModel = _furnitureService.GetFurnitureViewModel(); 

    return View(furnitureViewModel); 
} 

[HttpPost] 
public ActionResult ConfigureFurniture(FurnitureViewModel furnitureViewModel) 
{ 
    return View("Index"); 
} 

FurnitureViewModel和儲物櫃類是其中要發佈到預計Color類型的值,在C#中定義的數據的相同的內部

+0

請顯示您的'ConfigureFurniture'方法。 – krillgar

+0

只是一個警告......''在Internet Explorer 11及更早版本中不受支持。 – bradbury9

+0

什麼是「顏色」?那是'System.Drawing.Color'結構嗎? (在這種情況下,這將不會工作,它需要'字符串FrontColor',除非你創建一個'ValueProvider') –

回答

0

你張貼的唯一類是​​3210,它具有這樣的特性,FrontColor,你想設置。但是,您的操作需要FurnitureViewModel,您的問題中沒有包含該代碼。但是,基於這個,我可以猜到這個問題。最有可能你碰到這樣的:

public class FurnitureViewModel 
{ 
    ... 

    public Locker Locker { get; set; } 
} 

這意味着,爲了使模型綁定到值綁定,它需要它張貼Locker.FrontColor只是FrontColor

<input type="color" name="Locker.FrontColor" id="color1" /> 

或者,更好,只需使用助手,因爲他們會爲你生成正確的名字:

@Html.TextBoxFor(m => m.Locker.FrontColor, new { type = "color" }) 

此外,你需要保持FrontColor鍵入爲string。正如@Fran正確指出的那樣,您不能直接綁定到Color

+0

你是一個天才! 非常感謝!我花了幾個小時的時間...;( –

0

控制器動作。我不知道是否該類型是您創建一個或只是System.Drawing.Color

無論如何,問題是,你的輸入<input type="color" ...不會創建C#需要類型的值,所以數據來作爲通過null

+0

我可以在我的模型中獲取字符串作爲數據類型,無關緊要。 我仍然獲得空值 –

1

所選的FrontColor最有可能以字符串形式發送,值爲"#00ff00"或類似字符,但您可以確認在瀏覽器調試器中檢查發佈事件標題的確切值。

您可以將類型更改爲字符串。

class Data{ 
    public string SelectedColor { get; set; } 
} 

重命名輸入

<input type="color" name="SelectedColor" id="color1"/> 

然後,你可以支持屬性或方法添加到您的data類返回基於十六進制字符串

顏色類型假設你得到的字符串十六進制值,如#ffffff您可以使用System.Drawing.ColorTranslator.FromHtml

class Data{ 
    public string SelectedColor { get; set; } 

    public Color FrontColor() { 
     return System.Drawing.ColorTranslator.FromHtml(SelectedColor); 
    } 
} 

你可以看到一個可用的.NET Fiddle演示使用ColorTranslator.FromHtmlhere

+0

我將類型更改爲字符串,但仍返回null。 –

+0

在瀏覽器調試器控制檯中打開網絡選項卡(Chrome中的F12)時,您看到的是什麼值被髮布到請求的標題中?您應該看到表單數據值在此處發佈。 – Nope

+0

#66ecec - 所以它讀取的數據.. 但是在調試應用程序中的post方法中,屬性Frontcolor(字符串類型)get的null ... –

0

你可以像這樣設置你的Color類的屬性;

@Html.TextBoxFor(model => model.Color.xx, new { @class = "form-control" }) 
@Html.TextBoxFor(model => model.Color.yy, new { @class = "form-control" })