Возврат значений на страницу Razor — запутанный Javascript или .cs?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Возврат значений на страницу Razor — запутанный Javascript или .cs?

Сообщение Anonymous »

Меня смутили ответы на аналогичный вопрос, но я также упростил свое приложение, убрав один шаг, чтобы сделать его более понятным. Я надеюсь, что кто-нибудь сможет направить меня в правильном направлении и понять, что я делаю неправильно.
Отказ от ответственности: я не программист Javascript или asp.net. Я пытаюсь, но я еще не там. Если я задаю вопрос, то это потому, что, несмотря на то, что я прочитал много материала (и всегда перечитываю все, что было предложено) и задал вопросы, я все еще не понимаю или не пытаюсь заставить это работать самостоятельно после просмотр указанного материала не дал результатов. Я не задаю вопросы, потому что мне лень.
У меня есть приложение, которое должно записывать голоса в реальном времени. То есть кто-то нажимает кнопку-переключатель «Да», «Нет» или «Воздержаться», и голос записывается в столбцах «Да», «Нет» или «Воздержался». Существует 2 типа голосов: простое большинство и большинство в 2/3. Они определяются DDL. Если выбран вариант DDL, например, «Простое большинство» и есть голос «За», количество голосов за простое большинство должно быть записано в столбце «Да». Это должно произойти для каждого супервизора на странице. Вот мой последний скриншот:
Изображение

В настоящее время, когда я нажимаю любой переключатель в любой строке, в столбцах «Да», «Нет» или «Воздержался» не возвращается количество голосов. Кроме того, если щелкнуть переключатель для первого супервизора, а затем нажать переключатель для следующего супервизора, первый проверенный мной переключатель станет непроверенным. Каким-то образом мой код сообщает странице, что ВСЕ переключатели находятся в одной группе - даже если это должны быть отдельные группы - по одной для каждого руководителя.
Область заголовка голосования взята из окна голосования. таблица, которая при объединении с таблицей Supervisor становится таблицей WorkVote. Возможно, это запутанный способ сделать это, но я не был уверен, как еще я мог бы присоединиться к ним. Заголовок голосования (6 полей вверху страницы) создается отдельно, без остальной части страницы, и сохраняется в таблице голосования.
Итак, при нажатии Enter На странице голосов единственное, что должен сделать пользователь, — это щелкнуть каждую из групп переключателей, пока руководители голосуют для записи голосов. Затем пользователь нажимал кнопку «Обновить», и ВСЕ на этой странице было опубликовано в таблице «WorkingVote». Надеюсь, это имеет смысл.
Вот файл .cshtml (с моей попыткой написания Javascript):

Код: Выделить всё




Enter Votes

































---Select Supervisor Status---






---Select Vote Type---







---Select Committee---









MUNICIPALITY


SUPERVISOR


SIMPLE


2/3


ACTIVE VOTE


YES


NO


ABSTAIN




@foreach (var obj in Model.WorkingVote.OrderBy(i => i.Municipality))
{



@Html.TextBoxFor(modelItem => obj.Municipality, new
{ disabled = "disabled", @readonly = "readonly", @class = "form-control", @style = "width: 125px", id ="Municipality" })




@Html.TextBoxFor(modelItem => obj.SupervisorName, new
{ disabled = "disabled", @readonly = "readonly", @class = "form-control", @style = "width: 175px" })




@Html.TextBoxFor(modelItem => obj.SimpleMajority, new
{ disabled = "disabled", @readonly = "readonly", id = "SimpleMajority", @class = "form-control", @dir = "rtl", @style = "width: 75px" })




@Html.TextBoxFor(modelItem => obj.TwoThirdsMajority, new
{ disabled = "disabled", @readonly = "readonly", id = "TwoThirdsMajority", @class = "form-control", @dir = "rtl", @style = "width: 50px" })




@foreach (var item4 in Html.GetEnumSelectList())
{


@item4.Text
}




@Html.TextBoxFor(modelItem => obj.YesVote, new { disabled = "disabled", @readonly = "readonly", id="YesVote", @class = "form-control", @dir = "rtl", @style = "width: 100px"  })




@Html.TextBoxFor(modelItem => obj.NoVote, new { disabled = "disabled", @readonly = "readonly",  id="NoVote", @class = "form-control", @dir = "rtl", @style = "width: 100px" })




@Html.TextBoxFor(modelItem => obj.AbsVote, new { disabled = "disabled", @readonly = "readonly", id="AbsVote", @class = "form-control", @dir = "rtl", @style = "width: 100px" })



}



Update
Back to List




@{
var prevDisabled = !Model.WorkingVote.HasPreviousPage ? "disabled" : "";
var nextDisabled = !Model.WorkingVote.HasNextPage ? "disabled" : "";
}


Previous



Next


@section Scripts
{


const votes = [$("#Municipality")];
var votetype = document.getElementById('VoteType');
var sm = document.getElementById('SimpleMajority');
var ttm = document.getElementById('TwoThirdsMajority');
var radio = document.getElementById('ActiveVote');
var yes = document.getElementById('YesVote');
var no = document.getElementById('NoVote');
var abs = document.getElementById('AbsVote');

votes.forEach(radio.addEventListener("click", function updateVoteData() {
if (radio.value === 'Yes' && $("#VoteType").value === 'Simple Majority') {
radio.value = "Yes";
this.checked = true;
input.removeAttribute('disabled')
input.value = radio.value;
yes = $("#SimpleMajority").val();
$("#YesVote").val(yes);
}
elseif(radio.value === 'No' && $("#VoteType").value === 'Simple Majority') {
radio.value = "No";
this.checked = true;
input.removeAttribute('disabled')
input.value = radio.value;
no = $("#SimpleMajority").val();
$("#NoVote").val(no);
}
elseif(radio.value === 'Abstain' && $("#VoteType").value === 'Simple Majority') {
radio.value = "Abstain";
this.checked = true;
input.removeAttribute('disabled')
input.value = radio.value;
abs = $("#SimpleMajority").val();
$("#AbsVote").val(abs);
}
elseif(radio.value === 'Yes' && $("#VoteType").value === '2/3 Majority') {
radio.value = "Yes";
this.checked = true;
input.removeAttribute('disabled')
input.value = radio.value;
yes = $("#TwoThirdsMajority").val();
$("#YesVote").val(yes);
}
elseif(radio.value === 'No' &&  $("#VoteType").value === '2/3 Majority') {
radio.value = "No";
this.checked = true;
input.removeAttribute('disabled')
input.value = radio.value;
no = $("#TwoThirdsMajority").val();
$("#NoVote").val(no);
}
elseif(radio.value === 'Abstain' && $("#VoteType").value === '2/3 Majority') {
radio.value = "Abstain";
this.checked = true;
input.removeAttribute('disabled')
input.value = radio.value;
abs = $("#TwoThirdsMajority").val();
$("#AbsVote").val(abs);
}
else
{
''
}
}));



}
А вот мой .cs для той же страницы.

Код: Выделить всё

[BindProperties]

public class EditModel : PageModel
{
private readonly ApplicationDbContext _db;
public Vote Vote { get; set; }
public ActiveVote ActiveVote { get; set; }
public Supervisor Supervisor { get; set; }
public EditModel(ApplicationDbContext db)
{
_db = db;
}

public PaginatedList? WorkingVote { get; set; } = default!;

public IEnumerable DisplayCommitteeData { get; set; }
public IEnumerable DisplayVoteTypeData { get; set; }
public IEnumerable DisplaySupervisorData { get; set; }
public IEnumerable DisplayStatusData { get; set; }

public async Task OnGetAsync(int Id, int? pageIndex)
{
Vote = _db.Vote.Find(Id);
DisplayCommitteeData = await _db.Committee.ToListAsync();
DisplayVoteTypeData = await _db.VoteType.ToListAsync();
DisplaySupervisorData = await _db.Supervisor.ToListAsync();
DisplayStatusData = await _db.Status.ToListAsync();

IQueryable workingVote = (IQueryable)(from x in _db.Supervisor
join y in _db.Vote on x.Status equals y.SupervisorStatus
select new WorkingVote
{
VoteId = y.VoteId,
VoteCode = y.VoteCode,
VoteDate = y.VoteDate,
VoteDesc = y.VoteDesc,
VoteType = y.VoteType,
Committee = y.Committee,
Municipality = x.Municipality,
SupervisorName = x.DisplayName,
SimpleMajority = x.Simple,
TwoThirdsMajority = x.TwoThirds,
ActiveVote = y.ActiveVote,
YesVote = y.YesVote,
NoVote = y.NoVote,
AbsVote = y.AbsVote,
}); ;

int casesPerPage = 20;
WorkingVote = await PaginatedList.CreateAsync(
workingVote, pageIndex ?? 1, casesPerPage);
}

public async Task OnPost()
{
if (ModelState.IsValid)
{
_db.Vote.Update(Vote);
await _db.SaveChangesAsync();
TempData["success"] = "Votes cast successfully.";
return RedirectToPage("Index");
}
return Page();
}
}
Мои вопросы:
  • Могу ли я использовать для этого Javascript? Я получил противоречивые ответы.
  • Если да, то что не так с моим Javascript?
  • Если нет, то как мне заставить это работать на моем . cs?
Большое спасибо за понимание.

Подробнее здесь: https://stackoverflow.com/questions/786 ... ript-or-cs
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Возврат значений на страницу Razor — запутанный Javascript или .cs?
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Возврат значений на страницу Razor — запутанный Javascript или .cs?
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Возврат значений на страницу Razor — запутанный Javascript или .cs?
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Ссылка на страницу Razor из библиотеки классов Razor выдает ошибку 404.
    Anonymous » » в форуме C#
    0 Ответы
    51 Просмотры
    Последнее сообщение Anonymous
  • Ссылка на страницу Razor из библиотеки классов Razor выдает ошибку 404.
    Anonymous » » в форуме C#
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»