Я изучаю программирование веб-страниц ASP.Net с использованием Webmatrix (с синтаксисом бритвы).
Цель состоит в том, чтобы выпадающие списки заполнялись значениями, хранящимися в таблице, и выбранным значением, поступающим из другой объединенной таблицы.
Выбранное значение должно отображаться до и после сообщения.
Я также хочу, чтобы, если в таблице UserProfiles нет UserTypeId (UserTypeId == NULL), по умолчанию отображалось «Пожалуйста, выберите».
Таблица 1: Типы пользователей с полями UserTypeId и Name Таблица 2: Профили пользователей с UsertypeId в качестве внешнего ключа
У меня есть следующее сообщение об ошибке, и я не могу найти, как решить эту проблему: Оператор «==» не может быть применен к операндам типа «int» и «WebMatrix.Data.DynamicRecord».
Раздел КОД:
var db = Database.Open("MyDatabase");
Чтобы получить UserTypeId, хранящийся в таблице UserProfiles для подключенного пользователя
var selectedUserTypeId = db.QuerySingle("SELECT UserTypeId FROM UserProfiles INNER JOIN Users ON UserName=@0",authenticatedUser);
Чтобы получить список типов пользователей
var sqlUserTypeData = "SELECT userTypeId, Name FROM UserTypes";
var userTypeData = db.Query(sqlUserTypeData);
var userTypeDataList = userTypeData.Select(userTypeDataListItem => new SelectListItem {
Value = userTypeDataListItem.UserTypeId.ToString(),
Text = userTypeDataListItem.Name,
Selected = userTypeDataListItem.UserTypeId == selectedUserTypeId ? true : false
});
В последней строке возникает проблема: userTypeDataListItem.UserTypeId == selectedUserTypeId. Эти типы, по-видимому, нельзя сравнивать.
if(!IsPost){
var sqlUserData = @"SELECT *, UserTypes.Name AS UserType
FROM UserProfiles
INNER JOIN Users ON Users.UserId = UserProfiles.UserId
INNER JOIN UserTypes ON UserTypes.UserTypeId = UserProfiles.UserTypeId
WHERE Users.UserName=@0";
var userData = db.QuerySingle(sqlUserData,authenticatedUser);
userType = userData.UserType;
}
if(IsPost){
Validation.RequireField("userTypeCombo", "Please select");
userId = Request.Form["userId"];
userTypeId = Request.Form["userTypeCombo"];
if(Validation.IsValid()) {
var updateCommand = @"UPDATE UserProfiles
SET UserTypeId=@0
WHERE UserId=@1";
db.Execute(updateCommand, userTypeId, userId);
Response.Redirect("~/authcontent/user");
}
Раздел HTML:
@if (isAuthenticated) {
<form action="" method="post">
@Html.ValidationSummary()
<section class="infoblock">
<fieldset>
<legend>Mon profil</legend>
<ul>
<li><label for="userType">Profil</label>
@Html.DropDownList("userTypeCombo", "Please select", userTypeDataList)</li>
</ul>
</fieldset>
</section>
</form>
}