我的视图是脚手架生成的列表。列表的模型是:
public class LogsViewModel
{
public string Category { get; set; }
public string ClientIP { get; set; }
public string StartDate { get; set; }
public string EndDate { get; set; }
public string Message { get; set; }
}
为了过滤整个列表,我提供了一个bootstrap-modal表单,它有多个输入元素,例如:category,clientip,date和message。此模式的表单以下列方式使用Ajax.BeginForm:
@using (Ajax.BeginForm(
new AjaxOptions
{
HttpMethod = "get",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "results"
}))
{
<fieldset>
<div class="form-group">
<label for="recipient-name" class="control-label">Category:</label>
<select class="form-control" id="Category">
<option>Information</option>
<option>General Error</option>
</select>
@*<input type="text" class="form-control" id="category">*@
</div>
<div class="form-group">
<label for="recipient-name" class="control-label">IP:</label>
<input type="text" class="form-control" id="ClientIP">
</div>
<div class="form-group" id="startDTPicker" style="position:relative">
<label for="recipient-name" class="control-label" id="startDate">Start Date:</label>
<input type="text" class="form-control" id="StartDate">
</div>
<div class="form-group" id="endDTPicker" style="position:relative">
<label for="recipient-name" class="control-label" id="endDate">End Date:</label>
<input type="text" class="form-control" id="EndDate">
</div>
<div class="form-group" id="startDTPicker">
<label for="recipient-name" class="control-label">Message:</label>
<input type="text" class="form-control" id="Message">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<input type="submit" class="btn btn-primary" value="Show Results" />
</div>
</fieldset>
}
然后在控制器中,我试图获取这些参数(category = ...)。我已将ActionMethod声明为:
public ActionResult Index(LogsViewModel viewModel)
{
//all the properties are null when the Ajax request invokes this method
}
导致问题的原因是什么,最好的处理方式是什么?
答案 0 :(得分:3)
正如我在您的查看代码中看到的那样,您在所有name
标记上都没有input
属性。但是你需要它们,它们应该匹配你的模型属性名称,因为当你将值发布到服务器时它们就像使用键一样。
我的意思是你应该改变这个:
<input type="text" class="form-control" id="ClientIP">
对于所有标签:
<input type="text" name="ClientIP" class="form-control" id="ClientIP">