从MVC 4.0中的MVC Viewmodel中排除属性

时间:2013-12-21 15:58:17

标签: asp.net-mvc-4

我的课程为

public class Restaurant
{
    [Key]        
    public int RestId { get; set; }
    public string RestName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
    public int Pincode { get; set; }
    public string Country { get; set; }
    public virtual ICollection<RestaurantReviews>Reviews { get; set; }


}

public class RestaurantReviews 
{
    [Key]
    public int ReviewId { get; set; }
    public int RestId { get; set; }
    [Required]
    public int Rating { get; set; }
    [Required]
    public string Review { get; set; }        
    public DateTime? CreatedOn { get; set; }          


}

现在我已将View Model创建为

public class ViewRestReviews 
{
    public Restaurant restaurants{ get; set; }        
    public RestaurantReviews restaurantreviews { get; set; }

}

我正在使用此ViewModel将记录更新为

 [HttpPost]
    public ActionResult EditReview(ViewRestReviews model)
    {

       // TryUpdateModel(model, excludedpro: new[] { "FirstName" });
        ModelState.Remove("Rating");
        TryUpdateModel(model);

        if (ModelState.IsValid)
        {                               
            ObjEntity.Entry(model.restaurantreviews).State = EntityState.Modified;
            ObjEntity.SaveChanges();
            return RedirectToAction("Index","Review", new { RestId = model.restaurantreviews.RestId });

        }
        return View(model);
    }

现在我的问题是我不希望最终用户可以编辑'评级'。为此我在类上使用EXclude属性([Bind(Exclude =“Rating”)])甚至在actionMethod上使用。我使用excluded.But没有什么对我有用...请帮助我如何从VIEWMODEL中排除属性。感谢提前

2 个答案:

答案 0 :(得分:0)

理想情况下,您应该具有View特定模型(ViewModel),而不是在不同视图之间具有共享模型。

因此,为Edit Review Action创建一个单独的模型,它没有“Rating”属性。

答案 1 :(得分:0)

您可以重新绑定模型,因此我认为它适合您 如果您需要任何帮助,请告诉我

由于