2011-01-21 4 views
1

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

проблема: Код [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

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

должно быть

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

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

+0

я попробовал, добавив «Inherits =» Система не будет делать. Web.Mvc.ViewPage "или" Inherits = "System.Web.Mvc.ViewPage " и, к сожалению, это все равно происходит. –

+0

@FullmetalBoy Я думаю, это может быть потому, что вы используете тип объекта, попробуйте использовать некоторые другие типы вместо объекта – Omu