【问题标题】:Contact us form in ASP.NET MVC using Umbraco使用 Umbraco 在 ASP.NET MVC 中联系我们
【发布时间】:2014-07-26 09:31:05
【问题描述】:

我是 Umbraco 和 ASP.NET MVC 的新手,我正在处理 Umbraco 7 中的联系我们表格。

我创建了控制器和视图,但出现错误

在 RouteTable 中找不到控制器名称 ContactUsSurfaceController 的 Surface 控制器路由

我的模特:

public class ContactUs
{
    /// <summary>
    /// 
    /// </summary>
    public string Name { get; set; }

    /// <summary>
    /// 
    /// </summary>
    public string Company { get; set; }

    /// <summary>
    /// 
    /// </summary>
    public string Email { get; set; }

    /// <summary>
    /// 
    /// </summary>
    public string Tel { get; set; }

    /// <summary>
    /// 
    /// </summary>
    public string Intrested { get; set; }

    /// <summary>
    /// 
    /// </summary>
    public string Message { get; set; }
}

我的控制器

public class ContactUsSurfaceController : SurfaceController
{
    [HttpPost]
    public ActionResult Contact(ContactUs model)
    {
        if(ModelState.IsValid)
        {
            var sb = new StringBuilder();
            sb.AppendFormat("<p>name: {0}</p>", model.Name);
            sb.AppendFormat("<p>name: {0}</p>", model.Company);
            sb.AppendFormat("<p>name: {0}</p>", model.Email);
            sb.AppendFormat("<p>name: {0}</p>", model.Tel);
            sb.AppendFormat("<p>name: {0}</p>", model.Intrested);
            sb.AppendFormat("<p>name: {0}</p>", model.Message);
            umbraco.library.SendMail("test@test.com", "test@test.com", "Contact Us", sb.ToString(), true);
            return RedirectToCurrentUmbracoPage();
           }
        return JavaScript("alert('error')");
       }
    }
}

我对这个模型的看法:

    @model Umbraco.AddingValues.Web.Model.ContactUs
    @using (Html.BeginUmbracoForm("Contact", "ContactUsSurfaceController", null, new { @class = "contact-form" }))
    { 
   @Html.ValidationSummary(true)

    <div>

    @Html.LabelFor(x => x.Name)
    @Html.TextBoxFor(x => x.Name)
    @Html.ValidationMessageFor(x => x.Name)

    @Html.LabelFor(x => x.Email)
    @Html.TextAreaFor(x => x.Email)
    @Html.ValidationMessageFor(x => x.Email)

    @Html.LabelFor(x => x.Tel)
    @Html.TextBoxFor(x => x.Tel)
    @Html.ValidationMessageFor(x => x.Tel)

    @Html.LabelFor(x => x.Intrested)
    @Html.TextBoxFor(x => x.Intrested)
    @Html.ValidationMessageFor(x => x.Intrested)

    @Html.LabelFor(x => x.Message)
    @Html.TextBoxFor(x => x.Message)
    @Html.ValidationMessageFor(x => x.Message)

   </div>
    <input type="submit" value="Send Message" class="btn-accept" />
  } 

我在另一个视图中这样称呼它

    @Html.Action("~/Views/Partials/ContactForm.cshtml")

请帮我解决我遇到的错误

在 RouteTable 中找不到控制器名称 ContactUsSurfaceController 的 Surface 控制器路由

【问题讨论】:

  • 路由有问题请在此处发布路由配置文件。
  • 您好,亲爱的,我没有在其中找到任何 App-Start 文件夹。
  • umbraco 中必须有一种控制路由的方法,然后将其发布到这里,因为您面临的问题是由于路由问题......
  • 不熟悉umbraco,但是@using (Html.BeginUmbracoForm("Contact", "ContactUsSurfaceController", null..中的第二个参数应该是"ContactUs"还是“ContactUsSurface"”?
  • 同意斯蒂芬的观点,惯例规定行动:“ContactUs”和控制器:“ContactUsSurface”

标签: c# asp.net-mvc asp.net-mvc-4 umbraco umbraco7


【解决方案1】:

改变

 @using (Html.BeginUmbracoForm("Contact", "ContactUsSurfaceController", null, new { @class = "contact-form" }))

收件人:

@using (Html.BeginUmbracoForm<ContactUsSurfaceController>("Contact"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    • 2017-11-18
    • 2018-10-11
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多