Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
tarafından Rick Anderson
Not
Bu öğreticinin ASP.NET MVC 5 ve Visual Studio 2013 kullanan güncelleştirilmiş bir sürümü burada sağlanır. Daha güvenlidir, takip etmek çok daha kolaydır ve daha fazla özellik gösterir.
Bu öğreticide, Microsoft Visual Studio'nun ücretsiz sürümü olan Microsoft Visual Web Developer 2010 Express Service Pack 1'i kullanarak ASP.NET MVC Web uygulaması oluşturmanın temelleri öğretilecektir. Başlamadan önce, aşağıda listelenen önkoşulları yüklediğinizden emin olun. Aşağıdaki bağlantıya tıklayarak bunların tümünü yükleyebilirsiniz: Web Platformu Yükleyicisi. Alternatif olarak, aşağıdaki bağlantıları kullanarak önkoşulları tek tek yükleyebilirsiniz:
- Visual Studio Web Developer Express SP1 önkoşulları
- ASP.NET MVC 3 Araçları Güncelleştirmesi
- SQL Server Compact 4.0(çalışma zamanı + araçlar desteği)
Visual Web Developer 2010 yerine Visual Studio 2010 kullanıyorsanız, aşağıdaki bağlantıya tıklayarak önkoşulları yükleyin: Visual Studio 2010 önkoşulları.
C# kaynak koduna sahip bir Visual Web Developer projesi bu konuya eşlik edebilir. C# sürümünü indirin. Visual Basic'i tercih ediyorsanız, bu öğreticinin Visual Basic sürümüne geçin.
Öğreticinin bu bölümünde, otomatik olarak oluşturulan Details
ve Delete
yöntemlerinde bazı iyileştirmeler yapacaksınız. Bu değişiklikler gerekli değildir, ancak yalnızca birkaç küçük kod parçasıyla uygulamayı kolayca geliştirebilirsiniz.
Ayrıntıları ve Silme Yöntemlerini Geliştirme
Denetleyiciyi Movie
iskeleye eklediğinizde, MVC tarafından oluşturulan ve harika çalışan ancak yalnızca birkaç küçük değişiklikle daha sağlam hale getirilebilen bir kod ASP.NET.
Denetleyiciyi Movie
açın ve bir film bulunamadığında döndürerek HttpNotFound
yöntemini değiştirinDetails
. Ayrıca, yöntemi değiştirerek Details
ona geçirilen kimlik için varsayılan bir değer ayarlamanız gerekir. (Bu öğreticinin Edit
6. bölümünde yönteminde benzer değişiklikler yaptınız.) Ancak yönteminin Details
ViewResult
ActionResult
dönüş türünü olarak değiştirmeniz gerekir çünkü HttpNotFound
yöntemi bir ViewResult
nesne döndürmez. Aşağıdaki örnekte değiştirilmiş Details
yöntem gösterilmektedir.
public ActionResult Details(int id = 0)
{
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}
Code First, yöntemini kullanarak Find
veri aramayı kolaylaştırır. yönteminde yerleşik olarak sunduğumuz önemli bir güvenlik özelliği, kodun, kodla bir şey yapmaya çalışmadan önce yöntemin bir film bulduğunu doğrulamasıdır Find
. Örneğin, bir bilgisayar korsanı bağlantılar http://localhost:xxxx/Movies/Details/1
tarafından oluşturulan URL'yi gibi http://localhost:xxxx/Movies/Details/12345
bir değere (veya gerçek bir filmi temsil etmeyen başka bir değere) değiştirerek siteye hata verebilir. Null film denetimi yapmazsanız, bu bir veritabanı hatasına neden olabilir.
Benzer şekilde, id parametresi için varsayılan bir değer belirtmek ve bir film bulunamadığında döndürmek HttpNotFound
için ve DeleteConfirmed
yöntemlerini değiştirinDelete
. Denetleyicideki Movie
güncelleştirilmiş Delete
yöntemler aşağıda gösterilmiştir.
// GET: /Movies/Delete/5
public ActionResult Delete(int id = 0)
{
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}
//
// POST: /Movies/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id = 0)
{
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
db.Movies.Remove(movie);
db.SaveChanges();
return RedirectToAction("Index");
}
yönteminin Delete
verileri silmediğini unutmayın. GET isteğine yanıt olarak silme işlemi gerçekleştirmek (veya bu nedenle, düzenleme işlemi gerçekleştirmek, işlem oluşturmak veya verileri değiştiren başka bir işlem) bir güvenlik deliği açar.
VERILERI HttpPost
silecek yöntem, HTTP POST yöntemine benzersiz bir imza veya ad vermek için adlandırılır DeleteConfirmed
. İki yöntem imzası aşağıda gösterilmiştir:
// GET: /Movies/Delete/5
public ActionResult Delete(int id = 0)
//
// POST: /Movies/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id = 0)
Ortak dil çalışma zamanı (CLR), benzersiz bir imzaya (aynı ad, farklı parametre listesi) sahip olmak için aşırı yüklenmiş yöntemler gerektirir. Ancak burada biri GET, diğeri POST için iki Delete yöntemi gerekir ve her ikisi de aynı imzayı gerektirir. (Her ikisinin de parametre olarak tek bir tamsayı kabul etmeleri gerekir.)
Bunu çözmek için birkaç şey yapabilirsiniz. Bunlardan biri, yöntemlere farklı adlar vermektir. Önceki örnekte de bunu yapmıştık. Ancak bu küçük bir sorun oluşturur: ASP.NET URL'nin kesimlerini eylem yöntemlerine ada göre eşler ve bir yöntemi yeniden adlandırırsanız yönlendirme normalde bu yöntemi bulamaz. Çözüm, örnekte gördüğünüz yönteme özniteliğini DeleteConfirmed
eklemektirActionName("Delete")
. Bu, post isteği için /Delete/ içeren bir URL'nin yöntemini bulması için yönlendirme sistemi için eşlemeyi DeleteConfirmed
etkili bir şekilde gerçekleştirir.
Aynı adlara ve imzalara sahip yöntemlerle ilgili bir sorundan kaçınmanın bir diğer yolu da POST yönteminin imzasını kullanılmayan bir parametre içerecek şekilde yapay olarak değiştirmektir. Örneğin, bazı geliştiriciler POST yöntemine geçirilen bir parametre türü FormCollection
ekler ve ardından parametresini kullanmaz:
public ActionResult Delete(FormCollection fcNotUsed, int id = 0)
{
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
db.Movies.Remove(movie);
db.SaveChanges();
return RedirectToAction("Index");
}
Sarmalama
Artık verileri SQL Server Compact veritabanında depolayan eksiksiz bir ASP.NET MVC uygulamanız var. Film oluşturabilir, okuyabilir, güncelleştirebilir, silebilir ve arayabilirsiniz.
Bu temel öğretici, denetleyicileri oluşturmaya, görünümlerle ilişkilendirmeye ve sabit kodlanmış verileri geçirmeye başlamanızı sağlar. Ardından bir veri modeli oluşturup tasarladınız. Entity Framework Code İlk olarak veri modelinden anında bir veritabanı oluşturdu ve ASP.NET MVC iskele sistemi, temel CRUD işlemleri için eylem yöntemlerini ve görünümlerini otomatik olarak oluşturdu. Ardından, kullanıcıların veritabanında arama yapmasına olanak sağlayan bir arama formu eklediniz. Veritabanını yeni bir veri sütunu içerecek şekilde değiştirdiniz ve sonra bu yeni verileri oluşturup görüntülemek için iki sayfayı güncelleştirdiniz. Veri modelini ad alanından özniteliklerle DataAnnotations
işaretleyerek doğrulama eklediniz. Sonuçta elde edilen doğrulama istemcide ve sunucuda çalışır.
Uygulamanızı dağıtmak isterseniz, önce uygulamayı yerel IIS 7 sunucunuzda test etmek yararlı olur. ASP.NET uygulamalar için IIS ayarını etkinleştirmek için bu Web Platformu Yükleyicisi bağlantısını kullanabilirsiniz. Aşağıdaki dağıtım bağlantılarına bakın:
Şimdi ASP.NET MVC Uygulaması ve MVC Müzik Deposu için ara düzey Entity Framework Veri Modeli Oluşturma öğreticilerimize geçmenizi, MSDN'deki ASP.NET makalelerini keşfetmenizi ve ASP.NET MVC hakkında daha fazla bilgi edinmek için adresinden https://asp.net/mvc birçok video ve kaynağa göz atmanızı tavsiye ediyorum! ASP.NET MVC forumları soru sormak için harika bir yerdir.
Keyfini çıkarın!
— Scott Hanselman (http://hanselman.com ve Twitter'da @shanselman ) ve Rick Anderson blogs.msdn.com/rickAndy