将文本框值设置为Mailto功能中的主题。

时间:2014-04-15 12:47:47

标签: c# asp.net-mvc html-helper mailto

我在MVC for MailTo功能中创建了一个自定义html帮助器。

但是我要求将邮件主题设置为用户在另一个文本框字段中输入的值。

我不知道如何实现这一目标,有些人可以帮忙吗?

由于

Html Helper

public static MvcHtmlString SendMailTo(this HtmlHelper helper, string emailAddress, string subject, string displayText)
    {
        var sb = string.Format("<a href=\"{0}{1}{2}\" title=\"{1}\">{3}</a>",
            CharEncode("mailto:"), CharEncode(emailAddress),CharEncode("?subject=" +subject), CharEncode(displayText));

        return new MvcHtmlString(sb);
    }

    public static string CharEncode(string value)
    {
        var enc = System.Text.Encoding.Default;
        var retval = "";
        for (var i = 0; i < value.Length; i++)
        {
            retval += "&#" + enc.GetBytes(new[] { Convert.ToChar(value.Substring(i, 1)) })[0] + ";";
        }
        return retval;
    }

查看:

<div class="form-group">
                    @Html.LabelFor(m => m.ApplicationId, new { @class = "col-sm-3 control-label" })           
                    <div class="col-sm-8">
                        @Html.TextBoxFor(m => m.ApplicationId,  new {@class = "form-control"})          
                    </div>
                </div>          
              <div class="form-group">
                <div class="col-sm-11" style="text-align:right">
                    @Html.SendMailTo("info@test.com", "Password Request: ", "Request Password")                               
                    <button type="submit" class="button">Sign in</button>
                </div>
              </div>

1 个答案:

答案 0 :(得分:0)

没有任何jquery code,您无法获得该值。

您应该在texbox(这是用作用户邮件输入的那个)上的密钥(例如)上创建一个事件

email form放在partial view中,并在partial被触发时更新event

信息:

A)呈现ParialView使用Html.Partial helper - &gt;示例here

B)要获取文本框值,您可以使用以下jquery代码

    `$('.class of your textbox').val()' //will return a string

C)更新部分视图

   c.1 Place your partial view in a `div element`
   c.2 Make an `ajax` call from `jquery` to an action which returns your partial view filled with data

      Example for c.2:

           *AJAX* 

           $.ajax({
              type:"GET",
              data:{
                  mail:$('.class of your textbox').val()
              },
              success: function(response){
                 $(".class of your div").html(response.Html);
              }
              error: function(response){
                 // whatever you want to do 
              }
           });

          *Controller Action*

           public JsonResult(string mail)
           {

              var model = new CustomModel(){ Mail=mail };  // custom class to your as model for your partial view

              var html = RenderPartial(...)  // method you can find in the link posted below               
              return Json(
              {
                Html=html
              },JsonRequestBehavior.AllowGet)
           }

链接我上面写了几行 - 请点击this链接

您可以针对ajax所需的任何事件致电textbox