0

我有一个视图,用户可以在其中就页面上正在播放的内容视频发表反馈意见。使用以下代码,我可以手动输入 UserID 和 ContentID 并毫无问题地保存到数据库中。

@using (Html.BeginForm("Screencast", "Media", FormMethod.Post, new { id = "form", enctype = "multipart/form-data" }))
        {              
          <div class="row">
            <div class="six columns">
              <div class="row">
                <div class="six columns">
                  @Html.LabelFor(c => c.FeedbackComment.UserID)
                  @Html.TextBoxFor(c => c.FeedbackComment.UserID)
                </div>
                <div class="six columns">
                  @Html.LabelFor(c => c.FeedbackComment.ContentID)
                  @Html.TextBoxFor(c => c.FeedbackComment.ContentID)
                </div>   
                <div class="row">
                  <div class="twelve columns">
                    @Html.LabelFor(c => c.FeedbackComment.FeedbackString)
                    @Html.TextAreaFor(c => c.FeedbackComment.FeedbackString)
                  </div>
                </div>        
              </div>
            </div>
          </div>          
          <input type="submit" value="Submit button" class="medium button bottom20"/>
        }

但是,当用户在 HTTP 帖子之前的页面上时,我的模型中实际上有相关变量,称为:

Model.User.UserID
Model.SelectedItem.ContentID

我想将这些作为隐藏字段传递,但是当我尝试执行以下任一操作时:

@HtmlHiddenFor(c => c.FeedbackComment.UserID, @Model.User.UserID)
@HtmlHiddenFor(c => c.FeedbackComment.ContentID, @Model.SelectedItem.ContentID)

或者

@HtmlHidden("UserID",@Model.User.UserID)
@HtmlHidden("ContentID",@Model.User.UserID)

然后这些值返回 null,尽管在发布之前填充了这些值。我读到了一种手动输入输入标签的解决方法,但是当我这样做时,@Using.HtmlBeginForm 返回一个错误,即未设置为对象的实例

有人可以帮助我了解如何使用发布之前模型中的值将这些值传递到同一页面。

4

1 回答 1

1

给定以下视图模型(部分):

public class YourViewModel
{
     public User User { get; set; }

     public SelectedItem SelectedItem { get; set; }
}

您可以将这些属性绑定到隐藏的表单元素。当您回发时,这些属性仍将包含它们的值。

@Html.HiddenFor(x => x.User.UserID)
@Html.HiddenFor(x => x.SelectedItem.ContentID)

您的操作方法:

public ActionResult YourActionMethod(YourViewModel viewModel)
{
     // When you debug here you will see that the values are retained
}

我希望这有帮助。

于 2013-07-15T09:19:38.183 回答