无法找到Partial资源中的BeginForm

时间:2014-07-11 00:21:25

标签: c# asp.net-mvc razor

我有一个路由问题,我无法弄清楚:

部分方法:

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>

我错过了什么?

2 个答案:

答案 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" />