Итак, есть пара вещей, которые я хотел бы выделить, и я также добавил примечания к коду. Вы хотите сохранить 2 переменные в вашей программе / методе, чтобы отслеживать все введенное. Это 2 средних (1) и (2) числа входных чисел. Посмотрите код и прочитайте его построчно и посмотрите комментарии. Надеюсь, это поможет вам. Не стесняйтесь задавать вопросы, если что-то не имеет смысла.
bool exit = false;
// added variables outside of loop so they are available everywhere in the method
double grades = 0;
int gradesCount = 0;
do
{
Console.WriteLine("1. Enter Grades");
Console.WriteLine("2. Get Average");
Console.WriteLine("3. exit");
string input = Console.ReadLine();
Console.WriteLine("");
if (input == "1")
{
int totalGrades = 0;
//User Input
Console.WriteLine("How many grades do you want to enter? ");
//While loop for TryParse
while (!int.TryParse(Console.ReadLine(), out totalGrades))
{
Console.WriteLine("Please enter a valid number");
}
// increment the count of grades by the number of grades the user wants to add
gradesCount += totalGrades;
// variable to keep a count and avoid infinite loop
int addedGradesCount = 0;
// while loop works like a for loop using our variable to keep count of grades we add
while (addedGradesCount < totalGrades)
{
Console.WriteLine("Enter Grade: ");
// variable to store entered grade
double newGrade = 0;
//Reusing code from while loop above for TryParse
while (!double.TryParse(Console.ReadLine(), out newGrade))
{
Console.WriteLine("Please enter a valid number");
}
// increment running total of grades with the user input number
grades += newGrade;
// output to user - got rid of loop through totalGrades
Console.WriteLine("You entered: " + newGrade + " - Total: " + grades);
// increment variable to keep count! if this is not here, you will have infinite loop
addedGradesCount++;
}
// Console.ReadLine(); // not needed
}
else if (input == "2")
{
// calculate average using the method variables we initialized at the beginning
double average = (grades / gradesCount);
if (average >= 90)
{
Console.WriteLine($"The average is a {average} which is an A.");
}
else if (average >= 80)
{
Console.WriteLine($"The average is a {average} which is an B.");
}
else if (average >= 70)
{
Console.WriteLine($"The average is a {average} which is an C.");
}
else if (average >= 60)
{
Console.WriteLine($"The average is a {average} which is an D.");
}
else
{
Console.WriteLine($"The average is a {average} which is an E.");
}
}
else
{
exit = true;
}
} while (exit == false);
Console.ReadKey();
Во-первых, проверьте, правильно ли вы используете метод RenderPartial:
<% Html.RenderPartial(...); %>
Во-вторых, проверьте, что ваш web.config содержит:
<system.web>
<compilation>
<assemblies>
<add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
<pages>
<namespaces>
<add namespace="System.Web.Mvc.Html" />
</namespaces>
</pages>
</system.web>
Do you use
<% Html.RenderPartial("~/Views/Project/Projects.ascx", ViewData); %>
or
<%=Html.RenderPartial("~/Views/Project/Projects.ascx", ViewData); %>
?
it's supposed to be the first one, without "=". I'm not sure if that will solve it but I remember they changed something that way.
Также см.: «System.Web.mvc.htmlhelper» не содержит определения для «RenderPartial» - ASP.NET MVC
Вы можете подумать, что это глупо, но У меня только что была такая же проблема. У меня было рабочее приложение MVC, работает 1.0.0.0, и вдруг он перестал работать, давая мне одинаковую рендерию не в определении. Ну, оказывается, что, пока я сходил с ума, убирая мою web.config, я удалил этот раздел. Когда я повторно добавил его, все снова работало. Я уверен, что это что-то связано с тем, как класс нагрузки нагрузки во время выполнения.
В любом случае, повторно добавляя это в мой Web.config, работал на моей машине. ;)
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4"
type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4"
type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="OptionInfer" value="true"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
</compilers>
</system.codedom>