【问题标题】:mvc3, getting name and values from dropdowns in Razor Views?mvc3,从 Razor 视图中的下拉列表中获取名称和值?
【发布时间】:2013-03-01 20:23:07
【问题描述】:

我想从 MVC3 Razor 视图的下拉列表框中获取“名称”和“值”。请问最好的方法是什么?

剃刀代码:

        <div class="editor-label">
             @Html.LabelFor(model => model.Occupation)
        </div>
        <div class="editor-field">
            @Html.DropDownListFor(model => model.Occupation.PK, Model.GetLUV("Occupation",Model.Occupation.PK))
         </div>

生成的 HTML:

        <div class="editor-label">
             <label for="Occupation">Occupation</label>
        </div>
        <div class="editor-field">

            <select id="Occupation_PK" name="Occupation.PK"><option value="17">IT</option>
              <option value="18">Accountant</option>
              <option selected="selected" value="19">Solicitor</option>
            </select>
            <span class="field-validation-valid" data-valmsg-for="Occupation" data-valmsg- replace="true"></span>
        </div>

IE 我想存储 PK=17 和 Occupation="IT",而不仅仅是 PK=17。我将其持久化为 XML。

我最初的想法是添加一个隐藏字段,然后使用某种形式的 javascript 在运行时填充它。我相信我需要额外的字段来确保 modelbiding 可以选择它来填充 XML。

非常感谢。

【问题讨论】:

    标签: asp.net-mvc-3 razor


    【解决方案1】:

    恶意用户可以在其浏览器上编辑下拉列表的内容,从而允许他们在您的数据库中存储他们喜欢的任何职业值。这是不可取的。

    当表单被回发时,您可能希望在服务器端进行查找。查找服务将获取一个 id(在本例中为 17)并返回一个字符串('IT')。那么用户就不能恶意玩弄这个值了。

    【讨论】:

    • 用户始终可以保存 HTML、修改它并使用它来将更改后的值发送回服务器。或者他们甚至不需要保存它,他们可以使用 firebug 或其他类似的工具。无论如何,服务器端查找是一种可能的解决方案。
    • 没错。这就是为什么我建议在回帖时在服务器端进行查找。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 2011-10-04
    • 1970-01-01
    相关资源
    最近更新 更多