0

我正在使用 razor html 并尝试将数据发布到函数。我可以让部分数据提交并顺利通过,但其他部分我不能。

@using (Html.BeginForm("Reply", "api/Reply", new { ID = Model.ID, UserName = Model.Username }))
{
    <div id="mainArea" class="lightboxContent" style="display: block">
        <div class="lightboxText">
            <div class="responderTitleLeft">Select Profile:&nbsp;</div>
            <div class="responderFormFloat">
                <select name="profileSelector" class="select-style">
                    <option value="Select One" selected>Please Select Your Profile</option>
                    @foreach (var profile in Model.ProfileModels)
                    {
                        <option value="@profile.ProfileID">@profile.ScreenName</option>
                }
                </select>
            </div>
            <div class="responderActions">
                <div id="Reply" class="TwtiterReply">
                    <a href="javascript:void(0)">
                        <img src="/images/engage/actions/reply.png" onclick="toggle('ReplyArea')" title="Reply to message" />
                    </a>
                </div>
                <div id="ReplyArea" style="display: none;" class="responderForm">
                    <div class="responderTitle">Reply</div>
                    <textarea id="MessageEdit" name="Message" onkeyup="return characterCount(this)" onchange="postChange(this.id, 'messagePreview');" rows="4" cols="50" style="resize: none">@Model.Username</textarea>
                    <p id="counter"><strong><span id="charCount">140</span></strong> more characters available.</p>
                    <div class="lightboxButtonsBar">
                        <input type="button" onclick="toggle('mainArea')" tabindex="3" value="Reply" />
                        <input type="button" class="cancel" tabindex="4" value="Cancel" />
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div id="confirmArea" class="confirmationArea" style="display: none">
        <div class="warning">
            <p><strong>Warning:</strong></p>
        </div>
        <div class="warningMessage">
            <p>You are posting from @Model.ProfileModels with the message:</p>
            <div class="messagePreviewArea" data-form="Reply">
                <p>
                    <textarea id="messagePreview" readonly rows="4" cols="50" style="color: #ffffff; font-size: .9em; background-color: transparent; resize: none; border-color: #808080;"></textarea></p>
                <input type="submit" tabindex="3" value="Confirm" />
                <input type="button" onclick="toggle('mainArea')" tabindex="3" value="Cancel" />
            </div>
        </div>
    </div>
}

public UserProfile Reply(string ID, string UserName, FormCollection form)
        {
            var pSelector = form["profileSelector"];
            var message = form["Message"];



            ApiService msgserv = new ApiService();

            UserProfile up = UserProfile.GetFirst(new Guid(pSelector));

            messenger.Reply(up.key, UserName, ID, message);
            return up;
        }

我想从这个表格中得到什么(按照它的显示顺序)ID和用户名(它们是由模型提供的,我没有问题。)

我遇到的问题是配置文件选择器和带有名称消息的文本区域。

有人可以为我指出如何将文本区域和选择放入表单的正确方向吗?

4

2 回答 2

0

要从 textarea 中获取,请在您的视图上执行类似的操作@Html.TextArea("messagePreview");但如果可以的话,我建议您将内容保存在您的模型中。

于 2013-09-23T21:04:24.120 回答
0

选择不向模型提供数据的原因是它的name属性未设置为模型中对应的属性名称。文本区域也是如此。一般来说,如果您希望表单提交填充这些属性,您可以使用“强类型”辅助方法,例如 DropdownFor 和 CheckBoxFor。或者您可以手动连接它们,尝试将选择元素的名称设置为“SelectedProfile”并将回复操作更改为:回复(字符串 ID,字符串用户名,字符串 SelectedProfile,FormCollection 表单)

于 2013-09-23T21:01:14.060 回答