Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве показаны основные аспекты использования привязки модели с проектом веб-форм ASP.NET. Привязка модели позволяет напрямую взаимодействовать с данными, чем с объектами источника данных (например, ObjectDataSource или SqlDataSource). Эта серия начинается с вводного материала и переходит к более сложным концепциям в последующих руководствах.
В этом руководстве показано, как передать значение в строке запроса и использовать это значение для получения данных с помощью привязки модели.
Это руководство основывается на проекте, созданном в предыдущих частях серии.
Полный проект можно скачать в C# или VB. Скачиваемый код работает с Visual Studio 2012 или Visual Studio 2013. Он использует шаблон Visual Studio 2012, который немного отличается от шаблона Visual Studio 2013, показанного в этом руководстве.
Что вы будете создавать
В этом руководстве вы выполните следующие действия.
- Добавление новой страницы для отображения зарегистрированных курсов для учащегося
- Получение зарегистрированных курсов для выбранного учащегося на основе значения в строке запроса
- Добавление гиперссылки со значением строки запроса из представления сетки на новую страницу
Действия, описанные в этом руководстве, довольно похожи на то, что вы сделали в предыдущем руководстве , чтобы отфильтровать отображаемых учащихся на основе выбора пользователя в раскрывающемся списке. В этом руководстве вы использовали атрибут Control в методе выбора, чтобы указать, что значение параметра поступает из элемента управления. В этом руководстве вы будете использовать атрибут QueryString в методе выбора, чтобы указать, что значение параметра поступает из строки запроса.
Добавление новой страницы для отображения курсов учащихся
Добавьте новую веб-форму, использующую главную страницу Site.master, и назовите страницу "Курсы".
В файле Courses.aspx добавьте представление сетки, чтобы отобразить курсы для выбранного учащегося.
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<asp:GridView runat="server" ID="coursesGrid"
ItemType="ContosoUniversityModelBinding.Models.Enrollment"
SelectMethod="coursesGrid_GetData" AutoGenerateColumns="false">
<Columns>
<asp:BoundField HeaderText="Title" DataField="Course.Title" />
<asp:BoundField HeaderText="Credits" DataField="Course.Credits" />
<asp:BoundField HeaderText="Grade" DataField="Grade" />
</Columns>
<EmptyDataTemplate>
<asp:Label Text="No Enrolled Courses" runat="server" />
</EmptyDataTemplate>
</asp:GridView>
</asp:Content>
Определение метода select
В Courses.aspx.cs вы добавите метод select с именем, указанным в свойстве SelectMethod представления сетки. В этом методе вы определите запрос на получение курсов учащегося и укажите, что параметр поступает из значения строки запроса с тем же именем, что и параметр.
Сначала необходимо добавить следующие инструкции using .
using ContosoUniversityModelBinding.Models;
using System.Web.ModelBinding;
using System.Data.Entity;
Затем добавьте следующий код в Courses.aspx.cs:
public IQueryable<Enrollment> coursesGrid_GetData([QueryString] int? studentID)
{
SchoolContext db = new SchoolContext();
var query = db.Enrollments.Include(e => e.Course)
.Where(e => e.StudentID == studentID);
return query;
}
Атрибут QueryString означает, что значение строки запроса с именем StudentID автоматически назначается параметру в этом методе.
Добавление гиперссылки со значением строки запроса
В представлении сетки на Students.aspx вы добавите поле гиперссылки, которое ссылается на новую страницу курсов. Гиперссылка будет содержать значение строки запроса с идентификатором учащегося.
В Students.aspx добавьте следующее поле в столбцы представления сетки под полем "Итоговые кредиты".
<asp:TemplateField HeaderText="Total Credits">
<ItemTemplate>
<asp:Label Text="<%# Item.Enrollments.Sum(en => en.Course.Credits) %>"
runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField Text="Courses" DataNavigateUrlFormatString="~/Courses.aspx?StudentID={0}"
DataNavigateUrlFields="StudentID" />
Запустите приложение и обратите внимание, что представление сетки теперь включает ссылку "Курсы".
Щелкнув одну из ссылок, вы увидите курсы, на которые записан этот учащийся.
Conclusion
В этом руководстве вы добавили ссылку со значением строки запроса. Вы использовали это значение строки запроса для значения параметра в методе select.
В следующем руководстве вы переместите код из файлов программной части в слой бизнес-логики и уровень доступа к данным.