2012-12-19 4 views
1

мой метод действия:asp.net MVC пост действий пост ничего

[HttpPost, ActionName("Delete")] 
    [RequiredPermissions(RequiredPermissionName, Operation.Delete)] 
    public ActionResult DeleteConfirmed(User userWhoGone) 
    { 
     _db.Users.Remove(userWhoGone); 
     _db.SaveChanges(); 

     this.TempData["msg"] = "Deleted User Id " + userWhoGone.Id; 
     return RedirectToAction("Index"); 
    } 

Delete.cshtml

@model NewsMonitoringWeb.Database.Models.User 
@{ 
    ViewBag.Title = "User Delete"; 

<h2>User Delete</h2> 
<h3>Are you sure you want to delete this user?</h3> 

@Html.Partial("_PartialUser") 

@using (Html.BeginForm()) { 
    <p> 
     <input type="submit" value="Delete" /> | 
     @Html.ActionLink("Back to List", "Index") 
    </p> 
} 

_PartialUser.cshtml

@model NewsMonitoringWeb.Database.Models.User 

<fieldset> 
    <legend>User</legend> 

    <div class="display-label">User Role</div> 
    <div class="display-field"> 
     @Html.DisplayFor(model => model.UserRole.Name) 

    </div> 

    <div class="display-label">FirstName</div> 
    <div class="display-field"> 
     @Html.DisplayFor(model => model.FirstName) 
    </div> 

    <div class="display-label">LastName</div> 
    <div class="display-field"> 
     @Html.DisplayFor(model => model.LastName) 
    </div> 

    <div class="display-label">Email</div> 
    <div class="display-field"> 
     @Html.DisplayFor(model => model.Email) 
    </div> 

    <div class="display-label">Is Contributor</div> 
    <div class="display-field"> 
     @Html.DisplayFor(model => model.IsContributor) 
    </div> 
</fieldset> 

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

любое предложение?

+6

Вы, возможно, потребуется предоставить разметку вида по ... – codingbiz

+0

Вы имеете вопросы, объявление методу ? Можете ли вы показать нам код формы, который выполняет проводку, и как разрешается параметр пользователя? – marto

ответ

1

Ваша форма не имеет значения для отправки. Вам нужно либо поместить некоторые скрытые входные значения в форму, чтобы создать пользователя, либо добавить скрытый идентификатор пользователя в форму и изменить метод post action.

Чем позже будет мой предпочтительный метод следующим образом:

[HttpPost, ActionName("Delete")] 
[RequiredPermissions(RequiredPermissionName, Operation.Delete)] 
public ActionResult DeleteConfirmed(int userIdWhoGone) 
{ 

    _db.Users.RemoveById(userIdWhoGone); // You may need to create this. 
    // Atlernatively, get the user by id then call 'Remove() 
    var user = _db.User.Find(userIdWhoGone); 
    _db.Users.Remove(user); 


    _db.SaveChanges(); 

    this.TempData["msg"] = "Deleted User Id " + userIdWhoGone; 
    return RedirectToAction("Index"); 
} 

Delete.cshtml

@model NewsMonitoringWeb.Database.Models.User 
@{ 
    ViewBag.Title = "User Delete"; 

<h2>User Delete</h2> 
<h3>Are you sure you want to delete this user?</h3> 

@Html.Partial("_PartialUser") 

@using (Html.BeginForm()) { 
    <p> 
     @Html.HiddenFor(m => m.Id) @* <--- New input *@ 
     <input type="submit" value="Delete" /> | 
     @Html.ActionLink("Back to List", "Index") 
    </p> 
} 
-1

В настоящее время вы ничего не публикуете. Ваш пользователь частично находится вне формы.

Единственная вещь в форме - ваша кнопка и ссылка.

Вам необходимо перенести частичное, чтобы оно находилось внутри формы.

Так это будет выглядеть следующим образом:

@model NewsMonitoringWeb.Database.Models.User 
@{ 
ViewBag.Title = "User Delete"; 

<h2>User Delete</h2> 
<h3>Are you sure you want to delete this user?</h3> 



@using (Html.BeginForm()) { 
@Html.Partial("_PartialUser")  
<p> 
    <input type="submit" value="Delete" /> | 
    @Html.ActionLink("Back to List", "Index") 
</p> 
} 

EDIT

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

Вам необходимо изменить действие, чтобы принять идентификатор пользователя и выполнить поиск в базе данных.

+1

Это не будет работать, поскольку частичный вид имеет только элементы отображения. – NinjaNye

+0

Справедливая точка зрения, но он мог бы легко добавить скрытую –

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