Pagaard
Pagaard

Reputation: 43

Ajax.Beginform updatetarget and partial view

I've looked around, but can't find anything solving my problem with this (common?) issue.

My problem is that the whole site is refreshed instead of just the div tag. It have worked once, but after an update, not anymore...

AddMember.cshtml

@using DBSUSite.ViewModels
@model CommitteeAddMemberModel
<script src='@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")' type="text/javascript"></script>
<h1>
    Tilføj medlem</h1>
<p>
    Her kan du søge efter brugere og tilføje dem til bestyrelsen eller udvalget.</p>
@using (Ajax.BeginForm("SearchMembers", new AjaxOptions { UpdateTargetId = "searchUsersList", HttpMethod = "POST" }))
{
    @Html.HiddenFor(model => model.CommitteeId)
    <label for="str">
        Søg efter:
    </label>
    <input id="str" name="str" value="" />
    <input type="submit" value="Søg" />
}
<div id="searchUsersList">
    @{ Html.RenderPartial("_SearchUserPartial", Model); }
</div>

Action

[Authorize]

    [HttpPost]
    public ActionResult SearchMembers(int committeeId, string str)
    {
        //TODO: Put into User model!
        var db = new DBEntities();
        // Removed lots of code.
        var model = new CommitteeAddMemberModel { CommitteeId = committeeId, Users = users.Values.AsEnumerable() };

        return PartialView("_SearchUserPartial", model);
    }

Partial View

@using DBSUSite.Models
@using DBSUSite.ViewModels
@model CommitteeAddMemberModel
<table>
    <thead>
        <tr>
            <th>
                Navn
            </th>
            <th>Tilføj</th>
        </tr>
    </thead>
    <tbody>
        @foreach (User user in Model.Users)
        {
            <tr>
                <td>
                    @Html.DisplayFor(q => user.FirstName) @Html.DisplayFor(q => user.Surname)
                </td>
                <td>
                    @Html.ActionLink("Tilføj", "SaveMember", "Committee", new { committeeId = Model.CommitteeId, userId = user.UserID }, null)
                </td>
            </tr>
        }
    </tbody>
</table>

Thanks in advance!

Upvotes: 0

Views: 2904

Answers (1)

Kath
Kath

Reputation: 1854

You need to make sure that you included all these libraries:

<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

Upvotes: 1

Related Questions