我有这样的模特
public Nullable<bool> Space { get; set; }
public Nullable<bool> Lab { get; set; }
public Nullable<bool> Consultation { get; set; }
public Nullable<bool> Financial { get; set; }
public Nullable<bool> Other { get; set; }
在我的视图中,我初始化复选框,如您所见:
@Html.CheckBoxFor(model => model.Space.Value, new { id = "CheckSpace" })
@Html.CheckBoxFor(model => model.Lab.Value, new { id = "CheckLab" })
@Html.CheckBoxFor(model => model.Consultation.Value, new { id = "CheckConsultation"})
@Html.CheckBoxFor(model => model.Financial.Value, new { id = "CheckFinancial" })
@Html.CheckBoxFor(model => model.Other.Value, new { id = "CheckOther" })
但是当我将视图发布到我的控制器时,所有复选框的值都为空,你能不能给一些帮助?
答案 0 :(得分:3)
修改强>
您应该将属性bool
而不是bool?
绑定到@Html.CheckBoxFor
。帮助程序只能理解值true
或false
。然后使用
@Html.CheckBoxFor(model => model.Space, new { id = "CheckSpace" })
@Html.CheckBoxFor(model => model.Lab, new { id = "CheckLab" })
@Html.CheckBoxFor(model => model.Consultation, new { id = "CheckConsultation"})
@Html.CheckBoxFor(model => model.Financial, new { id = "CheckFinancial" })
@Html.CheckBoxFor(model => model.Other, new { id = "CheckOther" })
助手会生成
<input type="checkbox" name="Model Name" value="true" />
和
<input type="hidden" name="Model Name" value="false" />
这样当未选中复选框时,会向服务器发送一个值。
您可能也不想为每个复选框设置特定的ID,而是让框架生成一个;您可以使用例如
获取模型属性的id@Html.IdFor(model => model.Space)
答案 1 :(得分:2)
他们发布了null
,因为 id 和 name 应该与使用Model属性绑定的元素相同,并且您正在修改id:
这样做:
@Html.CheckBoxFor(model => model.Space)
它将被渲染为:
<input type="checkbox" id="Space" name="Space"/>
如果你修改了id,那么id和name就是你的模型属性的名称,该属性不会被绑定到post中的模型,你将获得null。
答案 2 :(得分:2)
@Html.CheckBoxFor()
不会使用可空的bool。如果您检查@Html.CheckBoxFor(m =>m.Space.Value)
生成的html,您会看到类似
<input type="checkbox" name="Space.Value" .....
但您没有名为Space.Value
的属性,只有Space
如果使用@Html.EditorFor()
,您将看到它生成一个包含3个值的选择(对于true,false和null)。
答案 3 :(得分:1)
检查您的复选框是否已禁用。 如果在视图侧禁用复选框,则始终将空值发送回已禁用属性的模型。
任何CSS类将checkbox disabled属性设置为true。
答案 4 :(得分:1)
您可以使用:
@Html.CheckBoxFor(m=>m.Space.Value,new{Name="Space"}),
我希望这会有效,模型绑定会以常规方式发生。
答案 5 :(得分:0)
它会起作用:
switch(r)
{
case "open google":
Process.Start("https://google.com");
break;
case "what's up":
OpenRandomSite();
break;
}
答案 6 :(得分:0)
关于此: 使用MVC5,Razor和C#,我做到了:
我的模型是这样的:
public function store(Request $request)
{
// Upload image 1
$image1 = $request->file('file1');
$avatarName = $image1->getClientOriginalName();
$image1->move(storage_path('app/public/images/image1'),$avatarName);
$imageUpload = new Image();
$imageUpload->filename = $avatarName;
$imageUpload->save();
return response()->json(['success'=>$avatarName]);
// Upload image 2
$image2 = $request->file('file2');
$avatarName = $image2->getClientOriginalName();
$image2->move(storage_path('app/public/images/image2'),$avatarName);
$imageUpload = new Image();
$imageUpload->filename = $avatarName;
$imageUpload->save();
return response()->json(['success'=>$avatarName]);
//Save image names in the database
$user = Auth::user();
$property = new Property;
$property->user_id = auth()->user()->id;
$property->image1 = $image1;
$property->image2 = $image2;
$user->save();
$property->save();
return redirect('/users/listings')->with('success', 'Listing has been created.');
}
}
我的视图以类似于Tinyint的布尔值
public partial class SOME_CLASS {
...
public byte COM { get; set; }
...
}
选中状态将发送 value =“” 属性中的值