簡體   English   中英

在MVC中如何在單擊按鈕時移動到其他動作方法

[英]How to move to other action method on button click in MVC

我制作了一個表格,用戶可以在其中輸入所有詳細信息。 就像填寫表格一樣。 填寫表格后。 當用戶單擊“保存”按鈕時,它應自動移至同一控制器中的其他操作方法。 並且必須在MVC的GRID VIEW中顯示數據。 在填寫表格時,用戶可以在網格視圖中的何處更新和保存他輸入的所有數據。 我使用數據庫優先方法。 並制作一個視圖模型類。 這是View Model類的代碼。

public class ViewModel
{
    [Required(ErrorMessage = "Please Enter Prodcut Name")]
    [DisplayName("Product Name")]
    public string Product_Name { get; set; }
    [Required(ErrorMessage = "Please Choose Category")]
    public int SelectedValue { get; set; }
    [Required(ErrorMessage = "Enter Price")]
    [DisplayName("Enter Price")]
    public decimal Price { get; set; }
    [Required(ErrorMessage = "Choose Picture")]
    [DisplayName("Choose Picture")]
    public string Picture { get; set; }
    [Required(ErrorMessage = "Choos Country")]
    public Nullable<int> Country_ID { get; set; }
    [Required(ErrorMessage = "Choose Type")]
    [DisplayName("Choose Product Type")]
    public string Product_Type { get; set; }
    public SelectList CategoryList { get; set; }
    public SelectList CountryList { get; set; }
    [Required(ErrorMessage = "Select Date")]
    public DateTime Date { get; set; }
}

控制器代碼

ProductionEntities DBContext = new ProductionEntities(); 

public ActionResult Index()
{
    ViewModel model = new ViewModel();

    List<tblCategory> CategoryList = DBContext.tblCategories.ToList();
    model.CategoryList = new SelectList(CategoryList, "Category_ID", "Category_Name");

    List<tblCountry> CountryList = DBContext.tblCountries.ToList();
    model.CountryList = new SelectList(CountryList, "Country_ID", "Country_Name");
    return View(model);
}

[HttpPost]
public ActionResult Index(ViewModel model)
{
    //ViewModel v = new ViewModel();
    //if (image1!=null)
    //{
    //    model.Picture = new byte[image1.ContentLength];
    //    image1.InputStream.Read(model.Picture, 0, image1.ContentLength);
    //}

    List<tblCategory> CategoryList = DBContext.tblCategories.ToList();
    model.CategoryList = new SelectList(CategoryList, "Category_ID", "Category_Name");
    List<tblCountry> CountryList = DBContext.tblCountries.ToList();
    model.CountryList = new SelectList(CountryList, "Country_ID", "Country_Name");
    if (!ModelState.IsValid)
    {
        tblProduct product = new tblProduct();
        product.Category_ID = model.SelectedValue;
        product.Country_ID = model.Country_ID;
        product.Price = model.Price;
        product.Product_Name = model.Product_Name;
        product.Date = model.Date;
        product.Picture = model.Picture;
        product.Product_Type = model.Product_Type;
        try
        {
            DBContext.tblProducts.Add(product);
            DBContext.SaveChanges();
        }
        catch  (DbEntityValidationException dbEx)
        {
            foreach (var validationErrors in dbEx.EntityValidationErrors)
            {
                foreach (var validationError in validationErrors.ValidationErrors)
                {
                    System.Console.WriteLine("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
                }
            }
        }
    }
    return View(model);
}

您應該遵循PRG( Post-Redirect-Get )模式。 成功保存記錄后,將重定向響應發送到瀏覽器,該瀏覽器將向呈現表格數據的action方法發出全新的GET請求。

DBContext.tblProducts.Add(product);
DBContext.SaveChanges();
return RedirectToAction("List");

然后在您的List操作方法中,您將讀取表格數據所需的記錄,並在其視圖中進行呈現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM