开发者

How to render a page with form fields and validate these fields on another page

I have a page ProjectField.cshtml which contains all the fields in a project. In the HTML page I have is this:

@{
    WebSecurity.RequireAuthenticatedUser();

    // Initialize general page variables
    var name = Request.Form["name"];
    var description = Request.Form["description"];
    int groupId;
    if (Request.Form["groupId"] != null)
    {
        groupId = Request.Form["groupId"].AsInt();
    }
    else
    {
        groupId = -1;
    }

    var menutitle = Request.Form["menutitle"];
}
<div>
    <div class="row-project">
        @Html.Label("Grupo: ", "group")
    </div>
    <select id="group" name="group">
        <option value="-1" @{ if(groupId < 0) { <text>selected="true"</text> } } label="--Selecione--">--Selecione--</option>
        <option value="0" @{ if(groupId == 0) { <text>selected="true"</text> } } label="Residencial">Residencial</option>
        <option value="1" @{ if(groupId == 1) { <text>selected="true"</text> } } label="Comercial">Comercial</option>
        <option value="2" @{ if(groupId == 2) { <text>selected="true"</text> } } label="Institucional">Institucional</option>
        <option value="3" @{ if(groupId == 3) { <text>selected="true"</text> } } label="Mostras">Mostras</option>
    </select>
    @Html.ValidationMessage("group")
</div>

<div>
    <div class="row-project">
        @Html.Label("Projeto: ", "project")
    </div>
    @Html.TextBox("project", name)
    @Html.ValidationMessage("project")
</div>

<div>
    <div class="row-project">
        @Html.Label("Título Menu: ", "menutitle")
    </开发者_开发技巧div>
    @Html.TextBox("menutitle", menutitle)
    @Html.ValidationMessage("menutitle")
</div>

<div>
    <div class="row-project">
        @Html.Label("Descrição: ", "description")
    </div>
    @Html.TextArea("description", description, 4, 35, null)
    @Html.ValidationMessage("description")
</div>


<div class="upload">
    <div>
    @Html.Label("Imagens: ", "images")
    </div>
    @FileUpload.GetHtml(
        initialNumberOfFiles:1,
        allowMoreFilesToBeAdded:true,
        includeFormTag:true,
        addText:"Adicionar",
        uploadText:"Salvar")
    @Html.ValidationMessage("images")
</div>
<div class="row center-button clear">
    <!--<input type="submit" name="action" value="Salvar" title="Salvar"/>-->
</div>

In my page Create.cshtml I ride the html using the method RederPage to render page ProjectFields.cshtml . See the complete code:

@{
        WebSecurity.RequireAuthenticatedUser();

        Layout = "~/Shared/_Layout.cshtml";
        Page.Title = "Novo Projeto";

        // Initialize general page variables
        var name = Request.Form["name"];
        var description = Request.Form["description"];
        int groupId = Request.Form["groupId"].AsInt();
        var menutitle = Request.Form["menutitle"];

        if (IsPost) 
        {   
            // Validate
            if (name.IsEmpty()) 
            {
                ModelState.AddError("project", "Nome do projeto é obrigatório.");
            }

            if (menutitle.IsEmpty()) 
            {
                ModelState.AddError("menutitle", "Título do menu é obrigatório.");
            }

            if (groupId < 0)
            {
                ModelState.AddError("group", "Grupo é obrigatório.");
            }

            if (Request.Files.Count <= 0 || Request.Files[0].ContentLength <= 0)
            {
                ModelState.AddError("images", "Insira pelo menos uma imagem.");
            }

            // Confirm there are no validation errors
            if (ModelState.IsValid)
            {
                 //CODE FOR SAVE DATA...
            }
        }

}

@if (!ModelState.IsValid)
{
    @Html.ValidationSummary("Houve um problema no cadastro de projeto", true, new{ @class="error" })
}
<form id="contact" method="post" enctype="multipart/form-data" action="@Href(@"~\Project\Create")">
    <fieldset>
        @RenderPage(Href("~/Project/Views/ProjectField.cshtml"))
    </fieldset>
</form>

@BindHelpers.Link(Href("~/Project/Index"), "Lista de projetos", "projects", "projects-link")

But when I make the post, it does not validate the data. I noticed that it runs the post form Create.cshtml and then immediately post the ProjectField.cshtml but that will validate the fields is the same Create.cshtml.


not sure if this will help you but, I don't see a form tag (or the helper to make one, if indeed there is such a helper). Am I missing something? I do see your input type "submit" tag, but I couldn't see a form tag (with action set to Create.cshtml).

Hope this helps!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜