Я разрабатываю небольшую форму в C # и ASP.NET MVC , и я хочу сделать все входные данные как только для чтения , когда у меня естьзначение Закрыто выбрано в моем DropDownList
, а также readOnly
, включая кнопку Send
.
Значение Закрыто исходит из другого ракурса. Я имею в виду, когда я ввожу детали, чтобы увидеть информацию этой формы (которая уже должна быть загружена), если в поле Status есть значение Закрыто, чтобы показать мне все поля только для чтения и, таким образом, разрешить его нельзя изменить.
Я прикрепил ниже код моей формы в html
и контроллер для загрузки данных
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<div class="form-group">
<label class="required-field" name="email" for="ticketEmailAppliInput">Email:</label>
<input onchange="validate(this)" maxlength="100" id="ticketEmailAppliInput" type="email" name="email" class="form-control form-control-user validateable" />
</div><div class="form-group">
<label class="required-field" name="area" for="ticketAreaAppliInput">Área:</label>
<input onchange="validate(this)" maxlength="100" id="ticketAreaAppliInput" type="text" name="area" class="form-control form-control-user validateable" />
</div>
<div class="form-group">
<label class="required-field" name="ubicacion" for="ticketLocationAppliInput">Location:</label>
<input onchange="validate(this)" maxlength="100" id="ticketLocationAppliInput" type="text" name="ubicacion" class="form-control form-control-user validateable" />
</div>
<div class="form-group" id="CategoryDiv">
<label class="required-field" name="category" for="ticketCategoryInput">Category:</label>
<select onchange="validate(this)" id="ticketCategoryInput" name="category" class="form-control form-control-user validateable" style="width: 100%; padding: 0.375rem 0.75rem; height: 50px;" tabindex="-1" aria-hidden="true">
<option value="" disabled selected>Select Option</option><option>Category 1</option>
<option>Category 2</option>
</select>
</div>
<div class="form-group" id="StatusDiv">
<label for="ticketStatusInput">Status:</label>
<select id="ticketStatusInput" name="status" class="form-control form-control-user" style="width: 100%; padding: 0.375rem 0.75rem; height: 50px;" tabindex="-1" aria-hidden="true">
<option value="" disabled selected>Select Option</option><option>Open</option>
<option>Closed</option>
</select>
</div>
<button type="button" id="submit" onclick="validate()" class="btn btn-primary btn-user btn-block">Send</button>
Контроллер
[HttpPost]
public JsonResult UpdateTicketFromDetails()
{
var ticketAreaAppliInput = Request.Form["ticketAreaAppliInput"];
var ticketLocationAppliInput = Request.Form["ticketLocationAppliInput"];
var ticketCategoryInput = Request.Form["ticketCategoryInput"];
var ticketStatusInput = Request.Form["ticketStatusInput"];
try
{
TicketRegisterResult result;
using (var scope = new TransactionScope())
{
// I create a new record variable with all fields
var record = new TK_DT_RECORDS
{
TK_CT_STATUS_ID = ticketStatusInput,
TK_CT_CATEGORIES_ID = ticketCategoryInput
};
// We update the ticket data (this will always be done)
var model = new TicketRegisterModel();
// We create the new record in the record table and insert it
result = model.UpdateTicket(
ticketAreaAppliInput, ticketLocationAppliInput, record);
//If the ticket was not saved, the transaction is finished and we return the error message
if (!result.Success)
return Json(new TicketResult
{
IsValid = false,
Error = "The changes could not be saved, please try again."
});
scope.Complete();
}
}catch (DbEntityValidationException ex)
{
//Falló al tratar de registrar datos en la base de datos
foreach (var e in ex.EntityValidationErrors)
foreach (var validationError in e.ValidationErrors)
Console.WriteLine("Property: " + validationError.PropertyName + " Error: " +
validationError.ErrorMessage);
return Json(new TicketResult
{
IsValid = false,
Error = "Ocurrió un error al crear el ticket, por favor inténtalo de nuevo."
});
}
return Json(new TicketResult
{
IsValid = true
});
}
ОБНОВЛЕНИЕ:
У меня уже есть проверкасделано с JQuery спереди, но это также необходимо сделать сзади, я делаю это для безопасности, через консоль браузера я могу осмотреть элемент и удалить свойства JQuery, поэтому необходимо сделать это сзади,Я не использую метки RAZOR или <ASP>
.
Консультации с JQuery можно использовать, если проверка выполняется только спереди, эта проверка уже выполнена, но этонесколько небезопасно, потому что к нему можно получить доступ из консоли браузера, проверить элемент и удалить свойство disabled
JQuery