C# MVC在视图模型之外将数据从视图传递到控制器
我有一个在拍卖网站上创建拍卖的界面C# MVC在视图模型之外将数据从视图传递到控制器,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个在拍卖网站上创建拍卖的界面 @using (Html.BeginForm("AddAuction", "Auction", FormMethod.Post, new { enctype = "multipart/form-data" })) { @Html.ValidationSummary(true) <div class="form-group"> @Html.LabelFor(model => model.title, ne
@using (Html.BeginForm("AddAuction", "Auction", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.title, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.title)
@Html.ValidationMessageFor(model => model.title)
</div>
</div>
(...) some other fields
<div class="form-group">
@Html.LabelFor(model => model.startDate, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.startDate)
@Html.ValidationMessageFor(model => model.startDate)
<input type="checkbox" id="gm" name="gm" value="Now" onclick=""> Now<br>
</div>
</div>
(...) some other fields (...)
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<button type="submit" class="btn btn-default">Send</button>
</div>
</div>
}
@使用(Html.BeginForm(“AddAuction”、“Auction”、FormMethod.Post、new{enctype=“multipart/formdata”}))
{
@Html.ValidationSummary(true)
@LabelFor(model=>model.title,新的{@class=“controllabel col-md-2”})
@EditorFor(model=>model.title)
@Html.ValidationMessageFor(model=>model.title)
(……)其他一些领域
@LabelFor(model=>model.startDate,新的{@class=“controllabel col-md-2”})
@EditorFor(model=>model.startDate)
@Html.ValidationMessageFor(model=>model.startDate)
现在
(…)其他一些字段(…)
发送
}
我遇到的问题是复选框“现在”。我希望它以这样的方式工作,当它被检查时,控制器将只设置startDate为DateTime.Now。
不幸的是,我不知道是否有任何方法可以在不编辑模型的情况下将复选框的值传递给控制器。我正在寻找类似于:
public async Task<ActionResult> AddAuction(Auctions auction, **bool checked**)
public async Task AddAuction(Auctions auction,**bool checked**)
有没有办法以这种方式传递参数 如果复选框的值为bool,则可以执行以下操作:
<input type="checkbox" id="gm" name="gm" value="True"> Now<br>
<input type="hidden" name="gm" value="False">
现在
在控制器中
public async Task<ActionResult> AddAuction(Auctions auction, bool gm)
public async Task AddAuction(拍卖拍卖,bool-gm)
复选框只有在选中时才会提交,这就是为什么如果未选中复选框,则必须添加具有相同名称的隐藏输入以提交假值
如果不想使用隐藏输入,则可以将操作中的bool参数设置为null,并将null视为false
public async Task<ActionResult> AddAuction(Auctions auction, bool? gm = null)
{
if(gm == null)
gm = false;
}
public async Task AddAuction(Auctions auction,bool?gm=null)
{
如果(gm==null)
gm=假;
}
如果复选框的值为bool,则可以执行以下操作:
<input type="checkbox" id="gm" name="gm" value="True"> Now<br>
<input type="hidden" name="gm" value="False">
现在
在控制器中
public async Task<ActionResult> AddAuction(Auctions auction, bool gm)
public async Task AddAuction(拍卖拍卖,bool-gm)
复选框只有在选中时才会提交,这就是为什么如果未选中复选框,则必须添加具有相同名称的隐藏输入以提交假值
如果不想使用隐藏输入,则可以将操作中的bool参数设置为null,并将null视为false
public async Task<ActionResult> AddAuction(Auctions auction, bool? gm = null)
{
if(gm == null)
gm = false;
}
public async Task AddAuction(Auctions auction,bool?gm=null)
{
如果(gm==null)
gm=假;
}
更改方法参数ro字符串gm
(以匹配名称
属性)。但是编辑数据时,请使用视图模型,而不是数据model@StephenMuecke谢谢,一切正常:)更改方法参数rostring gm
(以匹配name
属性)。但是编辑数据时,请使用视图模型,而不是数据model@StephenMuecke谢谢,一切正常:)