Building a contact form in Umbraco 7
Asked Answered
K

1

6

I´m new to MVC, and I have followed a tutorial for building a contact form page but get this error message: namespace name 'Models' does not exist

Controller - ContactSurfaceController.cs

namespace test.Controllers {
public class ContactSurfaceController : SurfaceController

{
    [HttpPost]
    public ActionResult Contact(ContactModel model)
    {
        if (ModelState.IsValid)
        {
            var sb = new StringBuilder();
            sb.AppendFormat("<p>Meddelande: {0}</p>", model.Message);
            sb.AppendFormat("<p>Namn: {0}</p>", model.Name);
            sb.AppendFormat("<p>E-post: {0}</p>", model.Email);
            sb.AppendFormat("<p>Telefon: {0}</p>", model.Phone);

            library.SendMail("[email protected]", "[email protected]", model.Subject, sb.ToString(), true);

            return RedirectToUmbracoPage(model.ThankYouPage);
        }
        return CurrentUmbracoPage();
    }


} 
}

Model - ContactModel.cs

namespace test.Models
{
    public class ContactModel
    {
        [Required]
        [DisplayName("Ärende")]
        public string Subject { get; set; }
        [Required]
        [DisplayName("Namn")]
        public string Name { get; set; }
        [Required]
        [DisplayName("E-post")]
        public string Email { get; set; }
        [DisplayName("Telefon")]
        public string Phone { get; set; }
        [Required]
        [DisplayName("Ärende")]
        public string Message { get; set; }
        public int ThankYouPage { get; set; }
    }
}

Partial View - ContactForm.cshtml

@model test.Models.ContactModel

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

    <div>

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

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

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

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

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

        @Html.HiddenFor(x => x.ThankYouPage)

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

And it´s here I get the error message on the first line View - Contact.cshtml

@using test.Models
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage

@{
    Layout = "uBlogsyBaseSite.cshtml";
}

@Html.Partial("ContactForm", new ContactModel { ThankYouPage = Model.Content.GetPropertyValue<int>("thankYouPage") })

What have I missed?

I really need help with this, any help is appreciated.

Thanks, Jonas

Kif answered 9/4, 2014 at 5:35 Comment(0)
A
3

Where do you store your surface controller code and your model code?

It should be stored in the app_code or in a separate DLL.

Azrael answered 9/4, 2014 at 15:46 Comment(2)
I´m store it in the Controllers and Models folder. But that should not cause the error message, or?Kif
Yes, it DOES cause the error message. If stored in "controllers" and "models" folder, you should BUILD them appropriatly using visual studio or msbuild. But you have probably, have a "website" configured. And websites do not compile files outside the app_data.Azrael

© 2022 - 2024 — McMap. All rights reserved.