我有一个路由问题,我无法弄清楚:
部分方法:
public ActionResult UserProjMetric(int id, DateTimeOffset? startDate, DateTimeOffset? endDate){
// some logic code here
return PartialView("_UserProjMetric", model);
}
主要观点:
<div id="dailyMetric">
@{
Html.RenderAction("UserProjMetric", "Users", new { id = Model.Id });
}
</div>
以上所有作品都很棒。我遇到的问题是我正在做一个不起作用的HTML.BeginForm。它声称无法找到资源。
<div class="dateContainer">
@using (Html.BeginForm("UserProjMetric", "Users", new { id = 23 }))
{
<span class=""><input type="text" class="startDate dates" placeholder="Start Date" id="from" name="from"></span>
<span class=""><input type="text" class="endDate dates" placeholder="End Date" id="to" name="to"></span>
<input class="btn btn-small" type="submit" value="Submit" />
}
</div>
我错过了什么?
答案 0 :(得分:1)
最好定义一个模型类,如:
public class UserProjMetricModel
{
public int id {get; set;}
public DateTimeOffset? startDate {get; set;}
public DateTimeOffset? endDate {get; set;}
}
然后添加您的操作方法签名,如
public ActionResult UserProjMetric(UserProjMetricModel userProjMetric)
路由器应正确识别要路由到的正确端点。
另外,不要忘记在视图中删除id路由值new { id = 23 }
,而是将其作为隐藏字段插入
@using (Html.BeginForm("UserProjMetric", "Users", FormMethod.Post))
{
<input type="hidden" name="id" value="23"/>
<span class=""><input type="text" class="startDate dates" placeholder="Start Date" id="from" name="from"></span>
<span class=""><input type="text" class="endDate dates" placeholder="End Date" id="to" name="to"></span>
<input class="btn btn-small" type="submit" value="Submit" />
}
答案 1 :(得分:0)
我建议你从表单元素中删除id = 23,并将其作为隐藏元素放在表单中。我认为所有其他代码都在工作。
<input type="hidden" id="id" name="id" value="23" />