2010-07-28 2 views
0

У меня есть приложение mvc. и я пытаюсь заставить мое удаление работать. В принципе, я хочу, чтобы это было, когда я нажимаю delete, это приводит меня к странице с сообщением «вы уверены?» у меня это работает, проблема заключается в том, чтобы уловить запрос и фактически удалить. Я пробовал разные методы. как показано ниже.Получение MVC2 Удаление для работы

public ActionResult Delete(int id) 
    { 
     var something = friendsDB.Friends.Single(a => a.Id == id); 
     return View(something); 
    } 
    [HttpPost] 
    public ActionResult Delete(int id, string confirmButton) 
    { 
     var something = friendsDB.Friends.Single(a => a.Id == id); 

     // For simplicity, we're allowing deleting of albums 
     // with existing orders We've set up OnDelete = Cascade 
     // on the Album->OrderDetails and Album->Carts relationships 

     friendsDB.DeleteObject(something); 
     friendsDB.SaveChanges(); 

     return View("Index"); 
    } 

Это не работает причина, DeleteObject и SaveChanges утверждают

«C: \ Users \ Mtszc \ Documents \ Визуальная Студия 2010 \ Projects \ Test \ Test \ Content \ Контроллеры \ DownloadsController. CS (36,23): ошибка CS1061: 'Test.Models.FriendsDB' не содержит определение для '' DeleteObject и нет методы расширения '' DeleteObject принимающей первого аргумента типа «Test.Models. Frie ndsDB»можно найти (вы пропали без вести с помощью директивы или ссылки на сборку?)»

второй вещью, которую я попытался был

public ActionResult Delete(int id) 
    { 
     var something = friendsDB.Friends.Single(a => a.Id == id); 
     return View(something); 
    } 
    [HttpDelete] 
    public ActionResult Delete(Friend myFriend) 
    { 
     try 
     { 
      friendsDB.Friends.DeleteOnSubmit(myFriend); 
      friendsDB.SubmitChanges(); 
      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

, что не работал. он скомпилирован, но когда я нажму кнопку delete, и он приведет меня к странице, где я скажу, что я уверен, что хочу удалить, он возвращает вид, который был уловком, то есть попытка не удалась.

Это простая база данных sql, которую я сделал, имя, имя, ссылка. и im, используя linq для класса sql. i c может создавать и просматривать, но не удалять.

+0

Является ли friendDB экземпляром ObjectContext? – Anero

+0

Решенный. как я отмечаю вопрос как разрешенный lol. – matiszac

ответ

0

Ok для тех, кто когда-либо рассматривает это я решить эту проблему. Через часы копания я решил проблему. Для тех, кто создал базу данных sql и создал для нее класс модели, используя linq для sql, это как заставить delete работать.

public ActionResult Delete(int id) 
    { 
     var something = friendsDB.Friends.Single(a => a.Id == id); 
     return View(something); 
    } 
    [HttpPost] 
    public ActionResult Delete(int id, string confirmButton) 
    { 
     var sigh = friendsDB.Friends.Single(a => a.Id == id); 
     try 
     { 
      friendsDB.Friends.DeleteOnSubmit(sigh); 
      friendsDB.SubmitChanges(); 
      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

с этим, создайте строго типизированный вид удаления.

0

Похоже, что сообщения об ошибках вас сбивают с толку.

"C:\Users\Mtszc\Documents\Visual Studio 2010 
\Projects\Test\Test\Content\Controllers\DownloadsController.cs(36,23): error 
CS1061: 'Test.Models.FriendsDB' does not contain a definition for 'DeleteObject' 
and no extension method 'DeleteObject' accepting a first argument of 
type 'Test.Models.FriendsDB' could be found (are you missing a using directive 
or an assembly reference?)" 

не относится к MVC действий, он имеет в виду ваш метод Test.Models.FriendsDB вызова:

friendsDB.DeleteObject(something); 

Похоже, вы не определили метод «DeleteObject» на friendsDB или у вас нет перегруженного метода, который допускает тип объекта Test.Models.FriendsDB.

Во-вторых, не путайте HTTP-методы (Get, Post, Put, Delete) с тем, что вы пытаетесь выполнить. «Put» и «Delete» - это методы, которые я не верю, что веб-браузеры часто используются, если вообще. Большинство запросов GET, если вы не отправляете форму, тогда они являются POST. Добавление HttpDelete скорее всего сделает это действие бесполезным. Если вы хотите, чтобы действие «Удалить» было отправлено из формы, добавьте HttpPost

+0

У меня недостаточно репутации для редактирования, но в вашем сообщении выше вы сказали, что большинство запросов - GET, если вы не отправляете форму, тогда они являются PUT. Это должно сказать, что если они отправляют форму, они являются POST. – 2010-07-28 02:29:59

+0

да, я знаю, что в основном поддерживаемые HTTP-запросы - это сообщение и получение, я просто пытался удачи. может кто-нибудь помочь мне определить метод удаления в моем классе модели. – matiszac

+0

Спасибо, Майк! (Я знал, что серьезно ... lol) –

1

Попробуйте что-нибудь подобное.

var rowToDelete = friendsDB.Friends.Single(a => a.ID == myFriend.ID); 
friendsDB.Friends.DeleteOnSubmit(rowToDelete); 
friendsDB.SubmitChanges(); 

Это был бы простой способ позаботиться о записи с Linq. Я прошу прощения, если синтаксис не идеален, так как я пишу его на лету из головы.

Кстати, есть несколько БОЛЬШИХ видео, сделанных ребятами в Microsoft для изучения ASP.NET MVC, а также LINQ. Проверьте их.

http://www.asp.net/mvc

Приветствия

+0

YEH THANKS LOL вы опубликовали это сразу после того, как я понял это. но спасибо человеку, я рад видеть его правильно !! – matiszac

+0

не забудьте пометить ваши вопросы как разрешенные. – 2010-07-28 19:22:49

Смежные вопросы