- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已阅读此问题ASP.NET MVC DropDownListFor not selecting value from model并回答,但我不知道问题的解决方案。
这是我 Controller 的一部分,这是我第一次为 View 调用 ddl,但尚未选择任何值。
private void bindDDLRefund(FormModel mod){
// refundCodes = _uow.ParameterRefund.GetAll().Where(e => e.IsDeleted.Value == false).Select(e => e.RefundCode).FirstOrDefault();
mod.DdlRefundPercentage = _uow.ParameterRefund.GetAll().Where(e => e.IsDeleted.Value == false).ToList().Select(e => new SelectListItem { Text = e.CfPercentage.ToString(), Value = e.RefundCode.ToString() }).OrderBy(e => e.Value);
//mod.DdlRefundPercentage = _uow.ParameterRefund.GetAll().Where(e => e.IsDeleted == false).ToList().Select(e => new SelectListItem() { Text = e.CfPercentage.ToString(), Value = e.RefundCode.ToString(), Selected = (e.RefundCode == mod.RefundCode) }).ToList();
}
public ActionResult Add(){
var mod = new FormModel();
//var percentage = GetAllPercentage();
//mod.ddlRefundPercentage = GetSelectListItems(percentage);
bindDDLRefund(mod);
mod.isCreate = true;
return View("Form",mod);
}
然后这是从 Controller 中选择的选定值,
public JsonResult GetTicketData(string ticketnumber){
bool isSuccess = false;
var result = new spRefTicketRefundRetrieve();
int isError = 0;
string errorDesc = "";
var mod = new FormModel();
try{
spRefTicketRefundRetrieveHeader obj = _uow.StoreProc.spRefTicketRefundRetrieve(ticketnumber);
isError = obj.IsError;
errorDesc = obj.ErrorDesc;
if (obj.IsError == 0){
result = obj.detailData;
}
isSuccess = true;
}
catch (Exception ex){
Logger.LogError("Reload Ticket Data", "Id = " + ticketnumber, ex);
}
return Json(new { success = isSuccess, value = result, isError = isError, errorDesc = errorDesc }, JsonRequestBehavior.AllowGet);
}
[HttpPost]
public JsonResult GetRefundData(string refund_id)
{
bool isSuccess = false;
var result = new spRefTicketRefundDetail();
int refundId = Encryption.Decrypt(refund_id);
try
{
result = _uow.StoreProc.spRefTicketRefundDetail(refundId);
isSuccess = true;
}
catch (Exception ex)
{
Logger.LogError("Reload Refund Data", "Id = " + refundId, ex);
}
return Json(new { success = isSuccess, value = result }, JsonRequestBehavior.AllowGet);
}
[HttpPost]
public JsonResult GetCFData(string ticketNumber, string refundCode)
{
bool isSuccess = false;
var result = new spRefTicketRefundChangeCF();
int isError = 0;
string errorDesc = "";
try
{
spRefTicketRefundChangeCFHeader obj = _uow.StoreProc.spRefTicketRefundChangeCF(ticketNumber, refundCode);
isError = obj.IsError;
errorDesc = obj.ErrorDesc;
if (obj.IsError == 0)
{
result = obj.listData;
}
isSuccess = true;
}
catch (Exception ex)
{
Logger.LogError("Reload CF Data", "Id = " + ticketNumber, ex);
}
return Json(new { success = isSuccess, value = result, isError = isError, errorDesc = errorDesc }, JsonRequestBehavior.AllowGet);
}
所选值约为 CfPercentage,变量结果包含代表 CfPercentage 的 CF_PERCENTAGE,
这是我的 View 和 jQuery;
@Html.DropDownListFor(e => e.RefundCode, Model.DdlRefundPercentage, new { @class = "form-control", id= "ddl-refund",onchange="CFChange();" })
var GetRefundData = function (refundId) {
$.ajax({
url: '@Url.Action("GetRefundData")',
type: 'POST',
data: { refund_id: refundId },
success: function (result) {
console.log(result);
if (result.success) {
SetFormDetail(result.value);
}
else
{
}
},
error: function (result) {
alert('Something error occured, please refresh the page.')
}
});
};
var GetRefundViewData = function (refundId) {
$.ajax({
url: '@Url.Action("GetRefundData")',
type: 'POST',
data: { refund_id: refundId },
success: function (result) {
console.log(result);
if (result.success) {
SetFormView(result.value);
}
else {
}
},
error: function (result) {
alert('Something error occured, please refresh the page.')
}
});
};
var GetTicketData = function (ticketNumber) {
var target = $("#loading");
$.ajax({
beforeSend: function () {
target.html('<img src="@Url.Content("~/Content/images/ajax-loader.gif")"> loading...');
$('#divForm').css('display', 'none');
},
url: '@Url.Action("GetTicketData")',
type: 'POST',
data: { ticketnumber: ticketNumber },
success: function (result) {
console.log(result);
if (result.success) {
target.html('');
if (result.isError == "0") {
$('#divForm').css('display', 'block');
$('#txtHiddenTicketNumber').val(ticketNumber);
SetForm(result.value);
GetCFData();
}
else {
alert(result.errorDesc);
}
}
else {
$("#loading").html('');
}
},
error: function (result) {
alert('Something error occured, please refresh the page.')
}
});
};
var CFChange = function ()
{
GetCFData();
};
var GetCFData = function ()
{
var TicketNumber = $('#txtHiddenTicketNumber').val();
var RefundCode = $("#ddl-refund option:selected").val();
$.ajax({
url: '@Url.Action("GetCFData")',
type: 'POST',
data: { ticketNumber: TicketNumber, refundCode: RefundCode },
success: function (result) {
console.log(result);
if (result.success) {
SetCFDetail(result.value);
}
else {
}
},
error: function (result) {
alert('Something error occured, please refresh the page.')
}
});
};
var SetForm = function(list){
$(list).each(function () {
$('#txtManualRefundNo').val(this.MANUAL_REFUND_NO);
$('#lblLocOfficeCode').html(this.LOCATION_OFFICE_CODE);
$('#lblPnrCode').html(this.PNR_CODE);
$('#lblPnrTicket').html(this.PNR_CODE + "/ " + this.TICKET_NUMBER);
$('#lblIssuedDate').html(this.ISSUED_DATE_STR);
$('#lblPassengerName').html(this.PASSENGER_NAME);
$('#lblRouteClass').html(this.ROUTE + "/ " + this.CLASS_CODE);
$('#lblFlight').html(this.FLIGHT_DATE_STR + " - " + this.FLIGHT_NUMBER);
$('#lblBaseComm').html(this.BASE_PRICE_STR + "/ " + this.COMMISSION_NOMINAL_STR);
$('#lblTax').html(this.TOT_TAX_STR + "/ " + this.TOT_NON_TAX_STR);
$('#lblPublish').html(this.PUBLISH_RATE_STR);
$('#lblRefundPercentage').html(this.CANCELLATION_FEE_PERCENTAGE_STR);
$('#lblCancelFee').html(this.CANCELLATION_FEE_AMOUNT_STR);
$('#lblAdminFee').html(this.ADMIN_FEE_STR);
$('#lblCommFee').html(this.COMMISSION_FEE_STR);
$('#lblTicketUsed').html(this.TICKET_USED);
$('#lblTotalRefund').html(this.REFUND_AMOUNT_STR);
$('#txtReason').val('');
$('#ddl-refund :selected').text(this.CANCELLATION_FEE_PERCENTAGE_STR);
});
};
var SetFormDetail = function (list) {
$(list).each(function () {
$('#txtManualRefundNo').val(this.MANUAL_REFUND_NO);
$('#lblLocOfficeCode').html(this.LOCATION_OFFICE_CODE);
$('#lblPnrCode').html(this.PNR_CODE);
$('#lblPnrTicket').html(this.PNR_CODE + "/ " + this.TICKET_NUMBER);
$('#lblIssuedDate').html(this.ISSUED_DATE_STR);
$('#lblPassengerName').html(this.PASSENGER_NAME);
$('#lblRouteClass').html(this.ROUTE + "/ " + this.CLASS_CODE);
$('#lblFlight').html(this.FLIGHT_DATE_STR + " - " + this.FLIGHT_NUMBER);
$('#lblBaseComm').html(this.BASE_PRICE_STR + "/ " + this.COMMISSION_NOMINAL_STR);
$('#lblTax').html(this.TOT_TAX_STR + "/ " + this.TOT_NON_TAX_STR);
$('#lblPublish').html(this.PUBLISH_RATE_STR);
$('#lblCancelFee').html(this.CANCELLATION_FEE_AMOUNT_STR);
$('#lblAdminFee').html(this.ADMIN_FEE_STR);
$('#lblCommFee').html(this.COMMISSION_FEE_STR);
$('#lblTicketUsed').html(this.USED_FEE_STR);
$('#lblTotalRefund').html(this.REFUND_AMOUNT_STR);
$('#txtReason').val(this.DESCRIPTION);
$('#lblRefundPercentage').html(this.CANCELLATION_FEE_PERCENTAGE_STR);
//$('#txtHiddenTicketNumber').val(this.TICKET_NUMBER);
$("#ddl-refund").val(this.REFUND_CODE);
});
//GetCFData();
};
var SetFormView = function (list) {
$(list).each(function () {
$('#txtManualRefundNo').val(this.MANUAL_REFUND_NO);
$('#lblLocOfficeCode').html(this.LOCATION_OFFICE_CODE);
$('#lblPnrCode').html(this.PNR_CODE);
$('#lblPnrTicket').html(this.PNR_CODE + "/ " + this.TICKET_NUMBER);
$('#lblIssuedDate').html(this.ISSUED_DATE_STR);
$('#lblPassengerName').html(this.PASSENGER_NAME);
$('#lblRouteClass').html(this.ROUTE + "/ " + this.CLASS_CODE);
$('#lblFlight').html(this.FLIGHT_DATE_STR + " - " + this.FLIGHT_NUMBER);
$('#lblBaseComm').html(this.BASE_PRICE_STR + "/ " + this.COMMISSION_NOMINAL_STR);
$('#lblTax').html(this.TOT_TAX_STR + "/ " + this.TOT_NON_TAX_STR);
$('#lblPublish').html(this.PUBLISH_RATE_STR);
$('#lblCancelFee').html(this.CANCELLATION_FEE_AMOUNT_STR);
$('#lblAdminFee').html(this.ADMIN_FEE_STR);
$('#lblCommFee').html(this.COMMISSION_FEE_STR);
$('#lblTicketUsed').html(this.USED_FEE_STR);
$('#lblTotalRefund').html(this.REFUND_AMOUNT_STR);
$('#lblPaymentType').html(this.PAYMENT_TYPE);
$('#lblReason').html(this.DESCRIPTION);
$('#lblRefundPercentage').html(this.CANCELLATION_FEE_PERCENTAGE_STR);
//$('#txtHiddenTicketNumber').val(this.TICKET_NUMBER);
$("#ddl-refund").val(this.REFUND_CODE);
});
//GetCFData();
};
var SetCFDetail = function (list) {
$(list).each(function () {
$('#lblCancelFee').html(this.CANCELLATION_FEE_AMOUNT_STR);
$('#lblAdminFee').html(this.ADMIN_FEE_STR);
$('#lblCommFee').html(this.COMMISSION_FEE_STR);
$('#lblTotalRefund').html(this.REFUND_AMOUNT_STR);
});
};
运行此命令后, View 始终不会根据与票号相关的 sp 选择百分比。我尝试修改它但没有任何效果。很高兴能提供帮助:)
最佳答案
这一行,
$('#ddl-refund :selected').text(this.CANCELLATION_FEE_PERCENTAGE_STR)
它实际上将当前选定选项的文本设置为 this.CANCELLATION_FEE_PERCENTAGE_STR
中的任何值。它实际上不会更改所选选项。您可以看到它的实际效果 here .
您应该做什么从服务器调用中获取 RefundCode
值,并将其传递到 val()
方法中,以将特定选项项设置为所选项目。
假设您的 Razor 使用此标记呈现您的下拉菜单。
<SELECT id="ddl-refund">
<option value="25">Twenty Five</option>
<option value="26">Twenty Six</option>
<option value="28">Twenty Eight</option>
<option value="29">Twenty Nine</option>
您从服务器调用收到的 json 数据有一个名为 RedundCode
的属性。
$(list).each(function () {
$("#ddl-refund").val(this.RefundCode);
}
如果 this.RefundCode
是 25 或 26 或 28 或 29,它将起作用。
我不太确定,当您只想发送单个项目时,为什么要发送数组。但这是另一回事。
关于javascript - dropdownlistfor 无法使用 jquery 从 Controller 更改为选定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34487373/
我有一个 DropDownListFor 组件,它有一个从数据库获取值的读取操作。但是,我想根据另一个 DropDownListFor 的值过滤这些值。 这是具有过滤器值的 DropDownListF
我正在为语言生成一个下拉列表。我想将该列表的特定项目设为 selected。这是查看页面代码: @{var languageList = new List(); var cultures =
我有一个绑定(bind)到模型成员的 DropDownListFor 以及可供选择的项目列表。绑定(bind)到这个成员有效,但我似乎无法弄清楚的是如何在页面加载时显示模型的当前值。 查看 @Html
我已经看到许多关于 DropDownListFor 验证的类似问题和答案,但我还没有看到我的特定问题。 这是我的 html 助手。 VB: @Html.DropDownListFor(Function
我有一个带有 BootStrap 的 Html.DropDownListFor,它不像我表单中的 Html.TextBoxFor 那样左对齐。我试过“向左拉”和“向左文本”都没有运气。当我使用开发人员
我发誓我在尝试从静态状态列表填充 DropDownList 时遇到了麻烦。我更希望通过 EntityFramework 从数据库中预先填充此列表。 我的 RegisterViewModel publi
我在输入表单中有其他字段和下拉列表。他们都验证得很好。即使没有正确验证前端的两个元素仍然可以在帖子中正确地建模绑定(bind)。我不完全确定他们为什么不验证。这是设置: View 模型 public
我知道已经有很多类似的问题,但我花了几个小时试图解决这个问题,其他答案似乎都没有帮助! 我只想使用 MVC 在下拉列表中显示字符串列表。这真的有那么难吗?我没有“文本”和“值”分隔(尽管 MVC 似乎
我想在 HTML 助手中添加扩展方法来生成这样的选择和选项 Andorra United Arab Emirates Afghanistan 选项有一个数据域属性,我可以这样使用它 @Html.Dr
所以,我得到了一个在我看来看起来像这样的 DropdownListfor: @Html.DropDownListFor(m => m.ProductCategory, new SelectList(M
首先,我是 .NET MVC 的新手,虽然我以前使用过一般的 MVC 想法。我正在使用 .NET MVC4 和 CodeFirst 使用 Entity Framework 。 我正在尝试向“创建” V
我正在尝试将数据从我的数据库检索到 HTML,而不是检索到 Html.DropDownListFor,但我无法检索到标记。 NewCustomerViewModel public class
我有一个 departmentID 的下拉列表,它根据在 DepartmentCategoryID 中选择的内容进行填充,但是如果它留空,我将无法进行验证。它或所有其他的都有效,但这是以不同的方式完成
我想知道是否有人可以帮助我解决我面临的问题。我正在尝试使用 Razor 在 DropDownListFor 上创建搜索。 private List LoadStockitems() { Lis
我已经搜索了好几个小时并尝试了所有的建议。我想我缺少一些基本概念。我想使用模型而不是 ViewBag,并且我在回发的模型中设置了选定的项目/值。 我正在 cshtml 中设置一个 ddl 和 acti
这是我的 View 模型: public class EntityViewModel { [Required(ErrorMessage = "Title is required")]
我正在尝试填充 DropDownListFor数据库中的项目,但是当我尝试运行该程序时,它给了我错误 Object reference not set to an instance .就像方法(从数据
我有以下设置我的下拉菜单到荒谬的宽度: @Html.DropDownListFor(x => x.TypeId, new SelectList(Model.Type, "TypeId", "Ty
一直在尝试多种方法来更改 DropDownListFor 元素的样式。要么我做错了什么,要么有什么东西压倒了它。我已经尝试在 View 元素和 CSS 中更改它。但没有成功。 查看: @H
我显然在理解 JS 方面遇到了问题。我是新手,我正在尝试让它适用于以下用例: If "Healthcare" is selected from the "discipline" dropdown th
我是一名优秀的程序员,十分优秀!