C# 表达式树可能不包含动态操作,但它';他没有告诉我在哪里
我遇到了一个问题,我得到了一个信息: \cshtml(24):错误CS1963:表达式树可能不包含 动态操作“} 以下是我的web表单代码:C# 表达式树可能不包含动态操作,但它';他没有告诉我在哪里,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,我遇到了一个问题,我得到了一个信息: \cshtml(24):错误CS1963:表达式树可能不包含 动态操作“} 以下是我的web表单代码: @using SuburbanCustPortal.MiscClasses @{ ViewBag.Title = "Order Gas"; } <h2>Order Gas</h2> @using (Html.BeginForm("OrderGasSuccess", "GasOrder", FormMet
@using SuburbanCustPortal.MiscClasses
@{
ViewBag.Title = "Order Gas";
}
<h2>Order Gas</h2>
@using (Html.BeginForm("OrderGasSuccess", "GasOrder", FormMethod.Post))
{
@Html.ValidationSummary(true, "Submit was unsuccessful. Please correct the errors and try again.")
<div>
<fieldset>
<legend>Account Information - all fields required</legend>
<div class="highlightedtext">
@ViewBag.Account
</div>
@if (SessionHelper.ShowPaymentOptions)
{
<div class="editor-label">
@Html.LabelFor(m => m.PaymentMethod)
</div>
<div class="editor-field">
@Html.DropDownListFor(x => x.PaymentMethod, SessionHelper.PaymentMethods)
</div>
}
<div class="editor-label">
@Html.LabelFor(m => m.TankPercent)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.TankPercent, new { @class = "GenericSmallTextBox" })
<label class="SmallBluelabel">Please enter the current percentage in your tank.</label>
@Html.ValidationMessageFor(m => m.TankPercent)
</div>
<br/>
<div class="editor-field">
@Html.CheckBoxFor(x => x.IsFill)
@Html.LabelFor(m => m.IsFill)
<label class="SmallBluelabel">Would you like us to fill your tank?</label>
@Html.ValidationMessageFor(m => m.IsFill)
</div>
<div class="editor-label">
<b> - OR - </b>
</div>
@if (!string.IsNullOrWhiteSpace(ViewBag.AlternateGasMessage))
{
<fieldset class="pleasenote">
<legend>@ViewBag.AlternateGasMessageHeader</legend>
<label class="warningLabel">@ViewBag.AlternateGasMessage</label>
</fieldset>
}
<div class="editor-label">
@Html.LabelFor(m => m.Amount)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.Amount, new { @class = "GenericSmallTextBox" })
<label class="SmallBluelabel">Or request a specific amount in the tank?</label>
@if (ViewBag.MinimumGasMessage != null)
{
<div>
<label class="SmallBluelabel">@ViewBag.MinimumGasMessage</label>
</div>
}
@Html.ValidationMessageFor(m => m.Amount)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.ContactNumber)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.ContactNumber, new { @class = "GenericTextBox" })
@Html.ValidationMessageFor(m => m.ContactNumber)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Message)
</div>
<div class="editor-field">
@Html.EditorFor(x => x.Message)
</div>
<div>
<input type="submit" value="Submit" class="typicalbutton"/>
</div>
</fieldset>
</div>
}
public ActionResult OrderGas()
{
var control = Logging.StartLog();
try
{
Logging.WriteLog("Starting OrderGas");
var svc = new SubService();
var orderGasModel = new OrderGasModel();
orderGasModel.ContactNumber = svc.GetCustomerPhoneNumber(SessionHelper.TokenId, SessionHelper.CurrentAccountGuid);
Logging.WriteLog(string.Format("orderGasModel.ContactNumber: {0}", orderGasModel.ContactNumber));
if (SessionHelper.ShowPaymentOptions)
{
SessionHelper.PaymentMethods = GetPaymentMethods2();
}
if (SessionHelper.MinimumGasOrderAmount > 0)
{
var msg = string.Format("Minimum gas order is {0} gallons.", SessionHelper.MinimumGasOrderAmount);
Logging.WriteLog(msg);
ViewBag.MinimumGasMessage = msg;
}
var gasordermsg = svc.GetAlternateGasOrderMessage(SessionHelper.TokenId);
ViewBag.AlternateGasMessageHeader = gasordermsg.Item1;
ViewBag.AlternateGasMessage = gasordermsg.Item2;
ViewBag.Account = string.Format("{0}-{1}", SessionHelper.CurrentBranchNumber.ToBranchString(),
SessionHelper.CurrentAccountNumber.ToAccountString());
return View(orderGasModel);
}
catch (Exception ex)
{
Logging.WriteException(ex);
Logging.WriteLog(ex.Message);
return View("Error");
}
finally
{
Logging.WriteLog(control, "End OrderGas");
}
}
我将其与我的历史记录进行了比较,以查看我更改了什么,但我不明白为什么它不再工作。当我在PaymentMethods上进行调试时,它会在出现异常之前给出一个异常
我已经试着注释了cshmtl的部分内容,但我无法得到一个明确的答案,即它的哪一部分导致了错误
我不知所措…有人知道我做错了什么吗?您的HTML中缺少
@model
引用。它遇到lambda并且找不到模型的第一行将抛出此错误
在cshtml的顶部,添加
@model OrderGasModel
在我的例子中,@model存在于我的cshtml页面的顶部,但由于我引用了一个对象列表,编译器仍然认为我的“@model”语句是一个动态操作。我的代码如下所示:
@model List<MyDataStructure>
@型号列表
因此,我必须声明一个包含所讨论列表的类,然后我必须修改代码以加载列表(因为我的“.ToList()”语句不再有效)
@model ListMyDataStructure
public class ListMyDataStructure
{
public List<MyDataStructure> ListOfData { get; set; }
}
@model ListMyDataStructure
公共类ListMyDataStructure
{
公共列表ListOfData{get;set;}
}
如果我计算正确,它会抱怨model类的PaymentMethod
成员。有什么特别的地方吗?我没有看到你在操作代码中设置它。@WiktorZychla你能告诉我你是怎么得出这个结论的吗?我不明白你所说的计数是什么意思吗?我已经回答过了,但要解释更多关于这个评论在@WiktorZychla中,错误指示\OrderGas.cshtml(24):
,对应于该特定文件顶部的第24行。这恰好是一个外观相当正常的lambda,但很明显要寻找lambda不会被处理的原因。@Claies啊,我不知道24是指第24行!很高兴知道!!这将大大有助于以后发现我的问题.我想现在我知道了才有意义…Tyvm!可能是dangit的复制品…太简单了。我一直在这件事上撞脑袋,完全忽略了。Tyvm