MVC ActionLink问题

时间:2011-04-19 06:55:35

标签: asp.net-mvc model actionlink

我的MVC应用有问题。 我有一个登录视图

<% Html.EnableClientValidation(); %>

<% using (Html.BeginForm())
   {%>
    <%: Html.ValidationSummary(true)%>

    <fieldset>
        <legend>Login</legend>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.Username)%>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.Username)%>
            <%: Html.ValidationMessageFor(model => model.Username)%>
        </div>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.Password)%>
        </div>
        <div class="editor-field">
            <%: Html.PasswordFor(model => model.Password)%>
            <%: Html.ValidationMessageFor(model => model.Password)%>
        </div>

        <p>
            <input type="submit" value="Login" />
        </p>



    </fieldset>
        <%: Html.ActionLink("Set Email",
              "SetEmail",
              "GASLogin",
                          new {model = Model.Username},
              null)%>
<% } %>

和一个ActionLink。当我点击actionlink时,我想发送一封电子邮件到文本框中的邮件地址“&lt;%:Html.TextBoxFor(model =&gt; model.Username)%&gt;” 。 问题是我的Model.Username为null。 那我怎么能这样做呢?

谢谢。

1 个答案:

答案 0 :(得分:0)

我想我看到了问题。尝试重新定义ActionLink,使其不定义model = Model.Username,并让MVC的自动绑定负责将字段值发送到您的操作方法。

当从视图生成html时,将评估ActionLink方法调用,因此此时您的模型将只包含您从之前返回视图的操作方法放入的内容。你想要的是在显示页面和触发http post之后用户在字段中放置的值,这是由MVC绑定管道组成的。