这很可能在某种程度上可能会成为一个非常愚蠢的问题,但基本上我在一个模型中有这个“形式”,它作为表单附加到我的View但是我无法实际传递任何数据它来自视图。它只有两个属性:Id属性和String属性。我一直在尝试使用页面上隐藏文本框中的文本填充String属性,但没有运气。
表格代码:
public class AllocateListForm
{
public int Id { get; set; }
public virtual string HiddenText { get; set; }
}
相关观看代码:
<% using (Html.BeginForm("SaveExit", "User", new { }, FormMethod.Post, new { id = "selectExitPoints" })) { %>
<fieldset>
<input type="hidden" id="HiddenText" />
</fieldset>
<% } %>
幕后有JQuery用文本填充HiddenText
,我可以向你保证它正在填充。幕后还有JQuery执行Ajax提交,我可以保证代码可以正常运行,因为它在应用程序的其他地方使用时没有问题。当我执行将表单提交给服务器的操作并且我转到我指向的控制器代码时,我设置了一个断点,这样我就可以进入控制台并检查表单上的HiddenText字段是否有任何数据空值。任何人都能指出我正确的方向吗?
答案 0 :(得分:8)
如果您将输入的名称指定为“HiddenText”,则模型绑定器应该将其选中。我假设您的控制器操作接受AllocateListForm
作为参数。
<input type="hidden" name="HiddenText" id="HiddenText" />
你也可以像这样使用Html Helpers:
@Html.HiddenFor(model => model.HiddenText, new { id = "HiddenText" })
编辑:添加AllocateListForm作为主模型的属性,然后将帮助器更改为@Html.HiddenFor(model => model.MyAllocateListForm.HiddenText)
答案 1 :(得分:4)
如果你想用Razor-way做的话,这应该可以解决问题。
@Html.HiddenFor(model => model.HiddenText);