ScaffoldColumn (false) не работает - PullRequest
1 голос
/ 22 января 2011

Цель: отобразить веб-сайт, чтобы заполнить форму, а также включить возможность проверки перед нажатием кнопки отправки.

проблема: код [ScaffoldColumn(false)] не работает при использовании <%: Html.EditorForModel() %> в представлении.

Вопросы: что мне делать?

// Fullmetalboy

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
 Inherits="System.Web.Mvc.ViewPage<MvcMusicStore.Models.Order>" %> 


<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Address and Payment 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <% using (Html.BeginForm()) {%> 

    <h2>Address and Payment</h2> 

    <fieldset> 
        <legend>Shipping Information</legend> 
        <%: Html.EditorForModel() %> 
    </fieldset> 


    <input type="submit" value="Submit Order" /> 
    <% } %>

</asp:Content>

private BokButikEntities _myBokButikEntities = new BokButikEntities();

//
// GET: /Checkout/

public ActionResult AddressAndPayment()
{
    return View();
}

// 
// POST: /Checkout/AddressAndPayment 

[HttpPost]
public ActionResult AddressAndPayment(FormCollection values)
{
    var order = new Order();
    TryUpdateModel(order);

    try
    {

        var cart = ShoppingCart.GetCart(this.HttpContext);

        order.Anvandarnamn = User.Identity.Name;
        order.OrderDatum = DateTime.Now;
        order.TotalKostnad = cart.KalkyleraTotalKostnad();

        //Save Order 
        _myBokButikEntities.AddToOrders(order);
        _myBokButikEntities.SaveChanges();

        //Process the order 
        cart.CreateOrder(order);

        return RedirectToAction("Complete", new { id = order.OrderID });

    }
    catch
    {
        //Invalid - redisplay with errors 
        return View(order);
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc; 

namespace BokButik1.Models.Validation
{
    [MetadataType(typeof(OrderMetadata))] 
    public partial class Order
    {
        // Validerar data

        [Bind(Exclude = "OrderID")]
        public class OrderMetadata 
        {
            [Required(ErrorMessage = "Förnamn saknas")]
            [DisplayName("Förnamn")]
            [StringLength(50)]
            public object Fornamn { get; set; }

            [Required(ErrorMessage = "Efternamn saknas")]
            [DisplayName("Efternamn")]
            [StringLength(50)]
            public object Efternamn { get; set; }

            [Required(ErrorMessage = "Mobilnummer saknas")]
            [DisplayName("Mobilnummer")]
            public int Mobilnummer { get; set; }

            [Required(ErrorMessage = "Gatuadress saknas")]
            [DisplayName("Gatuadress")]
            [StringLength(50)]
            public object Gatuadress { get; set; }

            [Required(ErrorMessage = "Postnummer saknas")]
            [DisplayName("Postnummer")]
            public object Postnummer { get; set; }

            [Required(ErrorMessage = "Ort saknas")]
            [DisplayName("Ort")]
            [StringLength(50)]
            public object Ort { get; set; }

            [ScaffoldColumn(false)]
            public object OrderID { get; set; }

            [ScaffoldColumn(false)]
            public object OrderDatum { get; set; }

            [ScaffoldColumn(false)]
            public object TotalKostnad { get; set; }

            [ScaffoldColumn(false)]
            public object Anvandarnamn { get; set; }
        } 
    }
}

1 Ответ

1 голос
/ 22 января 2011

это не сработает, потому что ваше мнение не сильно привязано ни к чему.

должно быть

<%@ Page ... Inherits="System.Web.Mvc.ViewPage<Order>" %> 

также, если в шаблонах редактора у вас будет Order.ascx, ScaffoldColumn также ничего не сделает

...