none
Asp.Net MVC обновить страницу частично RRS feed

  • Вопрос

  • Друзья, помогите советом!
    Пишу проект на ASP.NET. Задача проста... необходимо перегрузить не всю страницу а только Partial.
    Просмотрел тонну примеров в сети и написал следующий код :

    MODEL:

    public class FamilyModel
        {
            public int ID { get; set; }
            public string FamilyName { get; set; }
            public List<PersonModel> Members { get; set; }
            public PersonModel SelectedPerson { get; set; }
        }
    
       public class PersonModel
        {
           public int ID { get; set; }
           public string Name { get; set; }
        }
    
    

       VIEW :

    
    @model Pannels.Models.FamilyModel
    
    @{
        ViewBag.Title = "Index";
    }
    
    <h2>Index</h2>
    
    @Html.DisplayFor(x=>x.ID)
    <br />
    @Html.TextBoxFor(x=>x.FamilyName)
    
    <div style="float:left">
    @for (int i = 0; i < 3; i++)
    {
       <div style="float:left; padding-left:30px">
        @Ajax.ActionLink(Model.Members[i].Name, "GetPerson", new RouteValueDictionary { { "id", Model.Members[i].ID } }, new AjaxOptions() { UpdateTargetId = "memberDiv" })
         </div>
    }
    </div>
    <br />
    <br />
    <div id="memberDiv">
    @{Html.RenderPartial("MemberPartial", Model.SelectedPerson);}
    </div>
    

    Partial (memberpartial):

    @model Pannels.Models.PersonModel
    
    <div >
    
    @Html.DisplayFor(x => x.ID)
    <br />
    @Html.TextBoxFor(x=>x.Name)
    
    </div>
    

    CODE :

        public class HomeController : Controller
        {
            //
            // GET: /Home/
    
            public ActionResult Index()
            {
                FamilyModel family = GetFamily();
                return View(family);
            }
    
            public PartialViewResult GetPerson(int id = 0)
            {
                //
                FamilyModel familyModel = GetFamily();
                //
                PersonModel p = familyModel.Members.First(x => x.ID == id);
                return PartialView("MemberPartial", p);
            }
    
            private FamilyModel GetFamily()
            {
    *****
                return fam;
            }
    
        }
    

    Когда запускаю то получаю правильное представление :

    Но при нажатии на линк , вместо того что бы обновить только часть "Partial" и оставить все остальное без изменения , то получаю только "PatrialView" без остальной инфы. Вот так

    Подскажите, что делаю не так.
    Спасибо

Ответы

  • Загрузил. Посмотрел и опять же я Вам указываю, что нет ссылки на библиотеку

    Что у Вас:

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


    А где ссылка на:

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


    ???

     У себя вставил ссылку, все работает ----^

    Или вы не тот проект скинули?


    • Изменено Higgs.Boson 10 июня 2013 г. 6:48
    • Помечено в качестве ответа Helge35 10 июня 2013 г. 6:54
    10 июня 2013 г. 6:45

Все ответы